如何防止WebView2(Edgebased)打开新窗口
c#
当我打开一个新选项卡时,在 Webview2 内部,WindowsForms 外部的一个新窗口打开。我想阻止这个窗口打开,我该怎么做?
回答
您可以处理CoreWebView2.NewWindowRequested来决定新窗口
- 要完全抑制弹出窗口,请设置
e.Handled = true; - 要在同一窗口中显示弹出内容,请设置
e.NewWindow = (CoreWebView2)sender; - 要在另一个特定实例中打开,请设置
e.NewWindow为另一个CoreWebView2实例。
例如:
//using Microsoft.Web.WebView2.Core;
//using Microsoft.Web.WebView2.WinForms;
WebView2 webView21 = new WebView2();
private async void Form1_Load(object sender, EventArgs e)
{
webView21.Dock = DockStyle.Fill;
this.Controls.Add(webView21);
webView21.Source = new Uri("Https://stackoverflow.com");
await webView21.EnsureCoreWebView2Async();
webView21.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
}
private void CoreWebView2_NewWindowRequested(object sender,
CoreWebView2NewWindowRequestedEventArgs e)
{
e.NewWindow = (CoreWebView2)sender;
//e.Handled = true;
}