用于通知Windows 10 webview

时间:2015-09-09 09:46:45

标签: win-universal-app windows-10 cordova-win10

从Windows 8.1开始,webview的AllowedScriptNotifyUris属性被废弃,强烈要求在包清单文件下的ApplicationContentUriRules中设置网址。

它不允许在网址匹配条件中写*,如下所述。

<uap:ApplicationContentUriRules>
    <uap:Rule Match="*" Type="include" WindowsRuntimeAccess="all" />
</uap:ApplicationContentUriRules>

我不确定将在webview中加载哪个URL,我希望所有url都通知脚本或在清单文件中动态添加URL的任何其他方式。

3 个答案:

答案 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也是如此。

以下是localhost的工作示例: enter image description here