如何防止WebView2(Edge based)打开新窗口 [英] How to prevent WebView2(Edge based) to open a new window

查看:179
本文介绍了如何防止WebView2(Edge based)打开新窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 Webview2 内部,当我打开一个新选项卡时,WindowsForms 外部的一个新窗口会打开.我想阻止这个窗口打开,我该怎么做?

Inside Webview2 when I open a new tab, a new window outside WindowsForms is open. I want to prevent this window to Open, how can I do that?

推荐答案

您可以处理 CoreWebView2.NewWindowRequested 决定新窗口

You can handle CoreWebView2.NewWindowRequested to decide about new window

  • 要完全抑制弹出窗口,请设置 e.Handled = true;
  • 要在同一窗口中显示弹出内容,请设置 e.NewWindow = (CoreWebView2)sender;
  • 要在另一个特定实例中打开,请将 e.NewWindow 设置为另一个 CoreWebView2 实例.
  • To completely suppress the popup, set e.Handled = true;
  • To show the popup content in the same window, set e.NewWindow = (CoreWebView2)sender;
  • To open in another specific instance, set e.NewWindow to the other CoreWebView2 instance.

例如:

//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;
}

这篇关于如何防止WebView2(Edge based)打开新窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆