You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在UWP应用中使用window.external.notify时,ApplicationContentUriRules需完全匹配吗?

解决UWP WebView中window.external.notify()触发ScriptNotify事件的问题

刚好之前做UWP项目时踩过这个坑,要让WebView里的网页调用window.external.notify()能触发App里的ScriptNotify事件,核心就是给网页的URI配置权限,下面是具体的操作步骤和注意点:

方法一:通过Visual Studio设计器可视化配置(最推荐)

  • 打开你的UWP项目,找到Package.appxmanifest文件,双击打开它(默认会启动可视化设计器)
  • 切换到内容URI选项卡
  • 点击添加按钮,输入你需要允许的网页URI(例如https://your-target-website.com)
  • 在权限下拉菜单中选择允许,同时确保勾选了脚本选项——这一步是让网页脚本能和UWP应用交互的关键

方法二:手动编辑应用清单文件

如果可视化设计器出现问题,你可以直接编辑清单的代码:

  • 右键Package.appxmanifest文件,选择查看代码
  • 在<Application>节点内部,添加ApplicationContentUriRules配置,示例如下:
<ApplicationContentUriRules>
    <!-- 这里的Match替换成你实际的网页URI,*通配符可匹配子页面 -->
    <Rule Match="https://your-target-website.com/*" Type="include" WindowsRuntimeAccess="all" />
</ApplicationContentUriRules>

WindowsRuntimeAccess="all"会允许网页调用Windows Runtime相关能力,包括触发ScriptNotify事件。

关键注意事项

  • URI协议要求:清单中添加的URI必须使用HTTPS协议(如果是本地内嵌的HTML文件,需要用ms-appx-web://协议),HTTP协议的URI是不被允许的,配置了也不会生效
  • URI精度:尽量使用精确的URI或范围合适的通配符,避免用https://*这种过于宽泛的匹配,会带来安全风险
  • 事件绑定:配置完成后,别忘了在代码里给WebView绑定ScriptNotify事件处理器,示例C#代码如下:
private void TargetWebView_ScriptNotify(object sender, NotifyEventArgs e)
{
    // e.Value就是网页调用window.external.notify时传入的参数
    string webMessage = e.Value;
    // 这里写你的业务处理逻辑
}

内容的提问来源于stack exchange,提问作者Corcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:47:51