从Windows 8.1开始,webview的AllowedScriptNotifyUris
属性被废弃,强烈要求在包清单文件下的ApplicationContentUriRules
中设置网址。
它不允许在网址匹配条件中写*
,如下所述。
<uap:ApplicationContentUriRules>
<uap:Rule Match="*" Type="include" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>
我不确定将在webview中加载哪个URL,我希望所有url都通知脚本或在清单文件中动态添加URL的任何其他方式。
答案 0 :(得分:1)
启用外部网页以在何时触发ScriptNotify事件 调用window.external.notify,你必须在页面中包含页面的URI 应用清单的ApplicationContentUriRules部分。 (你可以做 这在Microsoft Visual Studio的“内容URI”选项卡上 Package.appxmanifest designer。)此列表中的URI必须使用HTTPS, 并且可能包含子域通配符(例如, https:// .microsoft.com)但它们不能包含域通配符(for 例如,https:// .com和https:// 。)。清单要求确实如此 不适用于源自应用程序包的内容,使用 ms-local-stream:// URI,或使用NavigateToString加载。
来自https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.aspx
答案 1 :(得分:0)
您还应该为所有子域添加通配符。 像这样:
<uap:Rule Match="https://*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*.*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*.*.*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*.*.*.*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*.*.*.*.*" Type="include" WindowsRuntimeAccess="all" />
<uap:Rule Match="https://*.*.*.*.*.*.*" Type="include" WindowsRuntimeAccess="all" />
请注意这一点,因为它会将所有WinRT API暴露给应用程序内的任何网址(webview)。您可以在webview上使用MSWebViewNavigationStarting
事件来监控网页浏览中的所有导航。
答案 2 :(得分:0)
如上所述,原因在于URI规则。 Here is the answer也是如此。