首页 > 解决方案 > UWP Webview - 选项卡标题更改时触发事件(DocumentTitle)

问题描述

我已切换到使用 UWP (Windows.UI.Xaml.Controls),但现在无法检测 webview 选项卡文本何时更改。

文本示例

我以前使用过 OnTitleChanged 事件,但在 UWP 中找不到替代方法。

我可以在 webView 中看到“Doc​​umentTitle”,并且它总是在必要时更新。

WebView wv_Browser = new WebView();
string Example = wv_Browser.DocumentTitle;

我已经尝试了 WebView 中的每个内置事件,但在更新时似乎没有一个事件会触发。

任何人都可以建议和替代方法来触发事件或监视此值吗?

标签: c#xamlwebviewuwp

解决方案


不幸的是,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 教程


推荐阅读