c# - UWP Webview - 选项卡标题更改时触发事件(DocumentTitle)
问题描述
我已切换到使用 UWP (Windows.UI.Xaml.Controls),但现在无法检测 webview 选项卡文本何时更改。
我以前使用过 OnTitleChanged 事件,但在 UWP 中找不到替代方法。
我可以在 webView 中看到“DocumentTitle”,并且它总是在必要时更新。
WebView wv_Browser = new WebView();
string Example = wv_Browser.DocumentTitle;
我已经尝试了 WebView 中的每个内置事件,但在更新时似乎没有一个事件会触发。
任何人都可以建议和替代方法来触发事件或监视此值吗?
解决方案
不幸的是,UWP WebView 中没有 OnTitleChanged
事件,但您可以像 Mehrzad Chehraz 所说的那样将 eval 函数注入到 html 页面中。请参考以下详细代码。
制作用于检测标题更改的 eval 函数。
string functionString = " new MutationObserver(function () { window.external.notify(document.title); }).observe(document.querySelector('title'), { childList: true })";
调用InvokeScriptAsync
方法注入 eval。(当 webview 导航完成时在下面调用)
await MyWebView.InvokeScriptAsync("eval", new string[] { functionString });
监听ScriptNotify
事件处理程序中的值更改
private void MyWebView_ScriptNotify(object sender, NotifyEventArgs e)
{
var title = e.Value;
}
有关更多信息,请查看UWP WebView 教程。
推荐阅读
- java - 我的 JTextArea 不尊重组件的大小并被切断
- oracle - 在 Oracle DB 中加载时,CSV 文件和控制文件中的列名不同
- javascript - 如何在 reactjs 和 createElement 中使用窗口、文档事件,如 appendChild
- java - 如何以编程方式重置用户的蓝牙服务?
- javascript - 如何检查函数是否在反应js中被调用?
- javascript - JavaScript SWITCH CASE 不适用于变量日期格式
- java - 如何使用 Xpath 计算 DIV 中的 IMG 标签
- php - mysql中的多连接表并在php数组中选择多面体值
- .net-core - NetCore 中的 Specflow Html 报告
- python - 如何在python中给定的不规则数字之间插入1个区间数