我已改用 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 函数注入(inject)到 html 页面中。请引用以下详细代码。
创建 eval 函数来检测标题更改。
string functionString = " new MutationObserver(function () { window.external.notify(document.title); }).observe(document.querySelector('title'), { childList: true })";
调用InvokeScriptAsync
方法来注入(inject)eval。 (当webview导航完成时调用下面)
await MyWebView.InvokeScriptAsync("eval", new string[] { functionString });
监听ScriptNotify
事件处理程序中的值发生变化
private void MyWebView_ScriptNotify(object sender, NotifyEventArgs e)
{
var title = e.Value;
}
欲了解更多信息,请查看UWP WebView tutorial 。
关于c# - UWP Webview - 选项卡标题更改时触发事件(DocumentTitle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61445905/