假设我正在点击Flashscore网站上的一些网球比赛。弹出一个新窗口。我想捕获 WebView2 中的第二个窗口:
browser.CoreWebView2Ready += delegate
{
browser.CoreWebView2.NewWindowRequested += OnNewWindowRequested;
};
private async void OnNewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
{
var newWindow = e.NewWindow; //null
}
Run Code Online (Sandbox Code Playgroud)
然而,newWindow是null。同时,使用WindowFeatures,我可以获得新窗口的高度或宽度:
uint height = e.WindowFeatures.Height;
uint width = e.WindowFeatures.Width;
Run Code Online (Sandbox Code Playgroud)
如何捕获对第二个窗口的引用?
NewWindowRequested 事件可以让您取消打开新窗口或用您自己的窗口替换该窗口,但您不能让 WebView2 为您打开一个新窗口并获取对该新窗口的引用。
NewWindowRequested事件场景:
Handled事件参数的属性设置为true。取消打开新窗口。如果window.open是创建新窗口的内容,则返回值为null。Handled将事件参数的属性设置为true,并使用该Uri属性在用户的默认浏览器中打开 URI,或者以其他方式处理 WebView2 外部的新窗口。Handled将事件参数的属性设置为true,并将NewWindow属性设置为您创建的新 CoreWebView2。如果window.open是创建新窗口的内容,则返回值是与您提供的 CoreWebView2 相对应的新窗口对象。您可以通过从 CoreWebView2Environment 类创建一个新的 CoreWebView2 来获取新的 CoreWebView2 ,或者如果您在 WPF、WinForms 或 WinUI 中使用 WebView2 元素,则可以创建一个新的 WebView2 元素并使用其 CoreWebView2 属性。您可以在我们的示例应用程序中看到一些使用 NewWindowRequested 事件的示例。