我有一个UWP应用程序,我在我的解决方案中的Windows运行时组件项目中定义了以下类:
[AllowForWeb]
public sealed class WebViewCallback
{
public string Cookie { get; set; }
public void reportCookie(string cookie)
{
Cookie = cookie;
}
}
从我的主应用程序程序集中,我有一个WebView(导航到某个URL),我在其中执行以下操作:
private async void MyWebView_FrameDOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
var callback = new WebViewCallback();
MyWebView.AddWebAllowedObject("WebViewCallback", callback);
await MyWebView.InvokeScriptAsync("eval", new[] { "WebViewCallback.reportCookie(document.cookie);" });
}
抛出0x80020101(SCRIPT_E_REPORTED),表明JS引擎无法找到(或不允许调用)我的回调对象。
我怀疑我在某种程度上没有满足MSDN中记录的AddWebAllowedObject的要求:
必须从a导入传入AddWebAllowedObject的对象 与运行组件分开的Windows运行时组件。这个 必须为AllowForWeb属性标识属性 由WebView安全子系统。如果您使用应用中的课程 项目,AddWebAllowedObject不起作用。
我的Windows运行时组件程序集可能需要做些什么吗?我只是将它添加到我的解决方案中,就像我对任何C#程序集一样。
我正在使用VS2017和Win10 Creators Update。