Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript与托管/本机代码的互操作性_Javascript_.net_Interop_V8_Typescript - Fatal编程技术网

JavaScript与托管/本机代码的互操作性

JavaScript与托管/本机代码的互操作性,javascript,.net,interop,v8,typescript,Javascript,.net,Interop,V8,Typescript,我目前正在构建一个服务器端应用程序,它运行无浏览器的JavaScript和TypeScript程序。我目前使用的JavaScript引擎是微软的JavaScript引擎“Chakra”(不过我还是考虑使用JavaScript.NET,因为它以一种更优雅的方式与谷歌的V8引擎挂钩) 我正在使用C#和.NET4.0对我的应用程序进行编程(以后将转到4.5) 到目前为止,我遇到了几个问题,例如,如果我运行以下程序: alert("Hello World"); 我收到一个错误,因为“警报”未定义。这大

我目前正在构建一个服务器端应用程序,它运行无浏览器的JavaScript和TypeScript程序。我目前使用的JavaScript引擎是微软的JavaScript引擎“Chakra”(不过我还是考虑使用JavaScript.NET,因为它以一种更优雅的方式与谷歌的V8引擎挂钩)

我正在使用C#和.NET4.0对我的应用程序进行编程(以后将转到4.5)

到目前为止,我遇到了几个问题,例如,如果我运行以下程序:

alert("Hello World");
我收到一个错误,因为“警报”未定义。这大概是在浏览器中实现的!(与HtmleElement、XMLHttpRequest等其他对象一样)

我想知道的是,我可以编写JavaScript代码来封送来自.NET(或其他托管/本机系统)的代码吗

例如:

function alert(message) {
    //Performs call to .NET
    MessageBox.Show("Hello World");
}
注:

我已经在这里做了一些研究:


有很多方法可以做到这一点。Chakra是windows中的一个“”,它实现了许多COM接口,使其能够告诉操作系统它能够在交互环境中运行脚本文件

这使您能够在应用程序中使用COM(如果您是纯托管的,则使用互操作),并为脚本环境提供本机对象。这就是windows脚本主机的运行方式,当您使用WSH类运行脚本时,它将为所有脚本引擎启用WSH类。 COM。可以使用在运行时将对象公开给正在执行的脚本


我这样做是为了使托管的IE web浏览器控件能够通过javascript调用本机代码,但是您必须非常熟悉COM的工作方式,并且您的COM/interop技能必须非常敏锐。事后看来,这项任务的难度并不值得,因为我的一位同事找到了一种更容易完成脚本/主机RPC的方法(通过观看浏览器ccontrol的导航事件,他能够创建自定义链接,然后通过编程单击它们,然后使用链接中的URL来确定要执行的操作,这是一个相当大的黑客行为,但他在大约5分钟内启动并运行了它,我花了数小时向脚本运行时公开类……)

看看这个:谢谢你的回答!我实际上决定现在就使用JavaScript.NET…至少在原型设计阶段(请原谅双关语)我之所以选择JavaScript.NET,是因为它使用Google的V8,而且将来可能需要移植该应用程序,以便与Linux、iOS等一起使用。