如何让C#与Javascript互操作?

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

是否有可能做到这一点? 如果是这样,怎么样?

编辑:要清楚,我没有在这个项目中使用ASP.NET。

您还可以使用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

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

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

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

或者您可以直接评估它

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

您当然可以从C#本地运行Javascript – 请参阅此文章以获取初学者。 但是,让Javascript访问您的框架可能会很棘手。 也许脚本#可以帮忙吗?

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