在WPF中从WebView2控件编程获取UserAgent字符串

dfddblmv  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(252)

对于WinForms和WinUI 3,我可以使用下面的代码来获取WebView2控件的用户代理字符串:

private async void GetDefaultUserAgentString()
{
    webViewForUaAgent = new WebView2();

    await webViewForUaAgent.EnsureCoreWebView2Async();

    webViewForUaAgent.NavigationCompleted += async (s, arg) =>
    {
        try
        {
            UserAgent = await webViewForUaAgent.ExecuteScriptAsync("eval('navigator.userAgent');");
        }
        catch (Exception ex)
        {
             // Log exception
        }
    };

    // Now that we've set everything up, we can navigate
    // (previously, we were navigating _before_ setting up Load handler
    webViewForUaAgent.NavigateToString("<html></html>");
}

但是,此代码不适用于WPF。它挂在EnsureCoreWebView2Async上,如许多其他帖子中所述(例如WebView2 EnsureCoreWebView2Async never returns),但这些帖子的修复都要等到ContentRendered事件之后才调用EnsureCoreWebView2Async,但我不能这样做,因为我正在编写一个没有UI的“插件”。
我还尝试等待WebView2 Loaded事件,如下所述:https://github.com/MicrosoftEdge/WebView2Feedback/issues/911不幸的是,这也挂在我身上。
有没有人知道一种方法来实现这一点,或者另一种方法来获得WebView2的用户代理字符串?

uoifb46i

uoifb46i1#

请参阅this GitHub issue,了解有关如何在无GUI应用程序中使用WebView2控件的更多信息和可能的解决方案。
解决方案似乎是使用CreateCoreWebView2ControllerAsync API。

相关问题