从在一个web视图加载WinJS调用本机C#(Call Native C# from WinJS t

2019-10-22 03:39发布

我知道这是可能调用本地C#WinJS通过创建Windows运行时组件,然后将其添加为到参考WinJS应用程序-但有可能从做同样的事情WinJS应用程序时,它的加载一个内部WebView

我已经试过了,但它似乎WinJS内部应用程序WebView在一个完全不同的环境或操作的东西,并没有找到符号,所以它崩溃,并提供推出的新实例VS2013尝试和调试。

Answer 1:

你在一个原生的JavaScript应用程序和网页视图的背景下,应用主机上下文正确的是两个不同的东西。 只有应用主机允许JavaScript说话的WinRT这也适用于WinRT的组件,组件在同样的方式,WinRT的API是本身结构。 实际上,你的问题是一样的,询问是否可以加载的WinRT组件到Web浏览器(因为网页视图是一个Web浏览器的控制,基本上是),那么答案是否定的。

代码网页视图里面只有这样,才能摆脱这方面的,跟我们的任何代码(JS,C#等)可访问的WinRT API的,是从网页视图中使用window.external.notify。 该应用拾取该消息作为来自网页视图来一个事件(在JS与X-MS-网页视图它MSWebViewScriptNotify ,在C#/ VB与XAML web视图它ScriptNotify )。 然后该应用程序可以处理参数来调用的API响应。

当然,因为window.external.notify并不像一个函数调用中,你可以返回一个值,该应用就必须通过其InvokeScriptAsync方法将结果发送到web视图,使其成为一个异步关系。

我再谈谈第四章中的细节我的免费电子书(204页起), 编程Windows应用商店的应用程序使用HTML,CSS和JavaScript,第2版 , http://aka.ms/BrockschmidtBook2 。



文章来源: Call Native C# from WinJS that's loaded in a WebView