如何让C#与Javascript互操作?

时间:2009-03-26 21:43:42

标签: c# javascript interop

我想在我的C#程序中托管Javascript。我想允许用户编写自定义Javascript代码,让我的C#程序运行他们的函数,并允许用户使用我的框架代码。

有可能这样做吗?如果是这样,怎么样?

编辑:要清楚,我使用ASP.NET进行此项目。

6 个答案:

答案 0 :(得分:3)

你也可以使用webbrowser控件在html文档中托管javascript,在两者之间进行交互,你可以创建一个COM可见类,并将它的实例设置为ObjectForScripting属性。

现在可以通过javascript中的window.external访问“外部”类的所有公共成员。此外,从托管代码端,您可以使用文档的InvokeScript方法来调用任何javascript函数。

这样很容易在两者之间传递复杂的物体。

我在Google Earth Api应用程序中使用了这个想法。 http://fraserchapman.blogspot.com/2008/08/google-earth-plug-in-and-c.html

答案 1 :(得分:2)

我强烈建议您使用Microsoft Dynamic Langauage Runtime (DLR)。它的目的是促进.Net环境中的脚本编写。 DLR不是特定于脚本的,因此随着时间的推移,将会构建更多的脚本语言,但目前我所知道的是IronRuby,IronPython和JScript。

答案 2 :(得分:1)

Spidermonkey .NET可能就是你要找的东西。

我不确定它是多么发达。但它基本上是Mozilla's Spidermonkey Javascript解析器引擎的端口,我非常喜欢。

或者您可以对其进行评估directly

答案 3 :(得分:1)

执行此操作的方法曾经是Windows脚本宿主,它允许您托管JSCript或VBScript。

答案 4 :(得分:0)

您当然可以从C#本地运行Javascript - 请参阅this article作为入门者。但是,让Javascript访问您的框架可能会很棘手。也许Script#可以提供帮助吗?

答案 5 :(得分:0)

您可以在其中嵌入JavaScript的HTML组件。另一方面,正确的是ASP.NET Web服务。也许使用智能客户端,您可以将它们结合起来。