c# - UWP Webview - 选项卡标题更改时触发事件(DocumentTitle)

标签 c# xaml webview uwp

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

Example of text

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

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

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/

相关文章:

c# - 如何在 C# 中处理 XML

c# - CosmosDB 的 MongoDB api 限制访问

Wpf xaml -IsExpanded 仅适用于第一个元素

javascript - 解析从 Android 应用程序返回的 javascript 值对象

android-intent - 在同一Webview事件中使用两个Intent启动YouTube视频

android - 按下后退按钮时删除 webview 文本区域中的字符

c# - 如何更好地处理索引超出范围

c# - 在 .NET 中提取有关 PNG 的图像信息

c# - 在 XAML 中添加数学公式的好方法?

c# - DataGrid 具有 WPF 中第 n 级单元格的 DataGrid