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

UWP应用WebView:本地网页调用window.external.notify失败排查

解决UWP WebView中window.external.notify报错的问题

我来帮你排查这个棘手的问题,你遇到的TypeError: Object doesn't support property or method 'notify',大概率和Content URI权限配置、WebView的核心设置有关,咱们一步步拆解解决:

1. 修正Content URI的权限配置

你提到把权限设为了"Allow for web only",但对于ms-appx-web:///协议的本地应用内网页,这个权限等级是不够的——window.external.notify属于应用和WebView的双向通信,需要更开放的权限:

  • 打开Package.appxmanifest,找到Content URIs板块
  • 确保你注册的ms-appx-web:///[SomeFolder]/*对应的权限设置为 "Allow for all"
  • 关键:一定要勾选ScriptNotify选项(很多人会漏掉这个细节,直接导致通信被拦截)

2. 确认WebView的IsScriptNotifyEnabled属性

不管是在XAML还是后台代码里,都要检查WebView是否启用了ScriptNotify功能:

  • XAML写法:<WebView x:Name="MyWebView" IsScriptNotifyEnabled="True" />
  • 后台代码写法:MyWebView.IsScriptNotifyEnabled = true;
    虽然这个属性默认是true,但如果被意外修改为false,会直接导致window.external.notify失效。

3. 验证网页的URI加载格式

确保你加载网页的URI是标准的ms-appx-web协议格式,比如后台代码里应该这么写:

MyWebView.Navigate(new Uri("ms-appx-web:///SomeFolder/SomePage.html"));

注意协议里三个斜杠后直接跟文件夹名,不要多写或少写斜杠,格式错误也可能引发通信异常。

4. 检查版本兼容性(补充确认)

你的应用目标版本是17763(Windows 10 October 2018 Update),这个版本对WebView的ScriptNotify支持是完全没问题的,但要确保应用的最低版本不低于16299(Fall Creators Update),过低的版本可能存在兼容性限制。

快速测试建议

可以先写一个极简的测试页面验证通信是否正常:

<!DOCTYPE html>
<html>
<head>
    <title>Test Notify</title>
</head>
<body>
    <button onclick="window.external.notify('test message from web')">Send Test Notify</button>
</body>
</html>

把这个页面放到你的SomeFolder里加载,点击按钮如果还是报错,那基本可以确定是Content URI的配置问题;如果能正常触发应用端的ScriptNotify事件,再逐步排查原有页面的JS代码逻辑问题。


内容的提问来源于stack exchange,提问作者J. H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:07:37