Windows 10 UWP window.external.notify在WebView中未定义

时间:2019-07-17 13:30:32

标签: uwp windows-10-universal uwp-xaml

我们在其中一个页面上使用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”时都会提示

非常感谢

2 个答案:

答案 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。