对于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的用户代理字符串?
1条答案
按热度按时间uoifb46i1#
请参阅this GitHub issue,了解有关如何在无GUI应用程序中使用
WebView2
控件的更多信息和可能的解决方案。解决方案似乎是使用
CreateCoreWebView2ControllerAsync
API。