2009-03-26 33 views
5

Tôi muốn lưu trữ Javascript trong chương trình C# của mình. Tôi muốn cho phép người dùng viết mã Javascript tùy chỉnh, và có chương trình C# của tôi chạy các chức năng của họ, cũng như cho phép người dùng sử dụng mã khung của tôi.Tôi làm cách nào để C# tương tác với Javascript?

Có thể thực hiện việc này không? Nếu vậy, làm thế nào?

Chỉnh sửa: Để rõ ràng, tôi là không sử dụng ASP.NET cho dự án này.

+0

Đây có phải là từ trang web hay không cần từ biểu mẫu chiến thắng? – RossFabricant

+0

Lý tưởng nhất là nó sẽ hoạt động bất kể giao diện ... –

+0

Xem [câu hỏi này] (http://stackoverflow.com/questions/268320/execute-a-javascript-function-in-a-c-application). –

Trả lời

3

bạn cũng có thể sử dụng điều khiển webbrowser để lưu trữ javascript trong tài liệu html, để tương tác giữa hai bạn sẽ tạo lớp hiển thị COM và đặt thể hiện của nó cho thuộc tính ObjectForScripting.

Mọi thành viên công khai của lớp 'bên ngoài' hiện có thể truy cập được thông qua window.external trong javascript. Ngoài ra, từ phía mã được quản lý, bạn có thể sử dụng phương thức InvokeScript của tài liệu để gọi bất kỳ hàm javascript nào.

Bằng cách này, bạn có thể dễ dàng truyền các đối tượng phức tạp giữa hai đối tượng.

Tôi đã sử dụng ý tưởng này khá một chút trong ứng dụng Google Earth Api này. http://fraserchapman.blogspot.com/2008/08/google-earth-plug-in-and-c.html

+0

Ah, tuyệt vời! Trong googling trước đây của tôi, tôi đã tìm thấy những người đề xuất cách tiếp cận kiểm soát webbrowser, nhưng không có lời giải thích được cung cấp tôi đã tìm ra các đề xuất đã được bên ngoài trường hợp sử dụng của tôi. Thanks =) –

+0

Nếu bạn kiểm tra ví dụ này, bạn có thể thấy một số tương tác phức tạp hơn, bao gồm khả năng đưa javascript vào thời gian chạy ... Xem IHTMLScriptElement.cs trong nguồn. http://code.google.com/p/winforms-geplugin-control-library/ - Fraser – Fraser

1

Spidermonkey .NET Có lẽ là những gì bạn đang tìm kiếm.

Tôi không chắc nó phát triển như thế nào. Nhưng về cơ bản nó là một cổng của Mozilla's Spidermonkey công cụ phân tích cú pháp Javascript mà tôi thích rất nhiều.

Hoặc bạn có thể đánh giá nó directly

0

Bạn chắc chắn có thể chạy Javascript natively từ C# - xem this article cho một starter. Tuy nhiên, việc truy cập Javascript vào khung công tác của bạn có thể khó khăn hơn. Có lẽ Script# có thể giúp bạn?

+0

Script # sẽ giúp viết JS nhưng tôi không nghĩ rằng nó sẽ giúp anh ta gọi mã .NET từ JS. – bdd

0

Có các thành phần HTML nơi bạn có thể nhúng JavaScript. Nói cách khác, điều thích hợp là một dịch vụ web ASP.NET. Có lẽ với một khách hàng thông minh, bạn có thể kết hợp cả hai.

2

Tôi khuyên bạn nên sử dụng số Microsoft Dynamic Langauage Runtime (DLR). Mục đích của cuộc sống là tạo điều kiện cho việc viết kịch bản trong môi trường .Net. DLR không phải là kịch bản cụ thể vì vậy theo thời gian nhiều ngôn ngữ kịch bản sẽ được xây dựng trên đầu trang của nó, nhưng tại thời điểm những người tôi biết về là IronRuby, IronPython và JScript.

+0

Tôi có thể đi tuyến đường này tuy nhiên tôi thích JavaScript như một ngôn ngữ. Nó sẽ thực sự tốt đẹp nếu có một thực thi DLR của JavaScript nhưng đến nay tôi đã không nhìn thấy bất cứ điều gì trong không gian đó. –

+0

Đã từng có, các mẫu ban đầu cho thư viện Microsoft.Scripting có các mẫu JScript. Tôi đã đọc rằng nó không còn được duy trì mặc dù. – sipwiz

+0

Có, bạn sẽ sử dụng DLR và Kiểu động - nhưng bạn vẫn phải lưu trữ JS đầu tiên trong một điều khiển trình duyệt và tạo một lớp hiển thị COM. Sau khi thực hiện xong, DLR làm cho giao diện dễ dàng hơn khi bạn có thể sử dụng cú pháp dấu chấm, v.v. và không phải lo lắng về sự phản chiếu và lời gọi, Tuy nhiên, DLR sẽ không chạy JS cho bạn, nó và Kiểu động sẽ chỉ cho phép bạn IO với nó dễ dàng hơn nhiều. – Fraser

1

Cách để thực hiện việc này trước đây là Máy chủ Windows Script, cho phép bạn lưu trữ hoặc là JSCript hoặc VBScript.

Các vấn đề liên quan