我们在其中一个页面上使用Windows 10上的UWP Webview;为了与应用程序进行通信,我们要使用window.external.notify()。
如此处https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.webview.allowedscriptnotifyuris#Windows_UI_Xaml_Controls_WebView_AllowedScriptNotifyUris所述,我们已将Sites域的所有排列添加到Package.appxmanifest的内容uri部分中
但是,window.external.notify仍然是未定义的,任何人都经历过。 我们尝试了如下排列...
https://example.com
https://example.com/*
https://*.example.com/
https://*.example.com/*
但是没有任何效果,非常感谢任何建议。 (我们从JS控制台中的调试中知道它是未定义的)
作为一种替代方法,我们还尝试了对自己的深层链接,但是每次“ AppFoo正在尝试打开AppFoo”时都会提示
非常感谢
答案 0 :(得分:0)
这无济于事,因为该示例没有使用白名单github.com/microsoft/Windows-universal-samples/blob / ...我的用例是用于外部域
我可以重现您的问题。您可以尝试使用WebView.InvokeScriptAsync注入jsvascript代码。例如,您可以在DOMContentLoaded
事件处理程序中注入js代码,如下所示:
private async void WebView_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
string[] parameters = new string[] { "window.addEventListener('load', function() {window.external.notify('abc');})" };
await sender.InvokeScriptAsync("eval", parameters);
}
答案 1 :(得分:0)
因此可以找到解决方案here。
但是TL; DR-我们不得不交换:
if (window.external && window.external.notify)
对于
if (typeof (window.external) !== 'undefined' && ('notify' in window.external))
正确检测是否可以调用它。在msft Web视图中,第一个语句的计算结果为false,第二个语句的计算结果为true。