【问题标题】:WebView2 NewWindowRequested Overwriting Existing WindowWebView2 NewWindowRequested 覆盖现有窗口
【发布时间】:2021-11-20 17:47:32
【问题描述】:

我有一个使用 webview2 的 WPF 应用程序。当用户导航到某个 URL 时,会出现指向 pdf 的链接,这些链接将在新窗口中打开。我要解决的问题是新窗口不考虑浏览器的大小(wv2 的一个已知问题)。

根据我正在阅读的内容,我可以通过将 CoreWebView2NewWindowRequestedEventArgs 上的 NewWindow 属性设置为我现有的 webview2 的 CoreWebView2 来解决这个问题,但是当我这样做时,它:

  1. 不打开新窗口
  2. 用空白页覆盖现有窗口

版本 版本:WebView2 1.0.902.49 .NET 框架 4.7.2 操作系统 Wind10

补充说明:

即使我注释掉上述所有代码并在该方法中抛出一个调试器来检查事件参数,它仍然会覆盖现有窗口(尽管所有代码都被注释掉了)。但是,它似乎只有在我点击调试器时才会这样做,如果我删除它,窗口仍然存在并且弹出窗口打开。

当我检查给定的 uri 时,它是“about:blank#blocked”,这可能是页面为空白的原因。因此,如果我无法获得此 pdf 的实际 uri / url,即使我可以让它工作,我也无法在新窗口中打开它。

【问题讨论】:

  • e.Handled = true 是必需的,以便征用我正在尝试做的新窗口的行为。

标签: webview2


【解决方案1】:

您使用CoreWebView2NewWindowRequestedEventArgs.NewWindow 属性告诉WebView2 在哪里显示新窗口。如果将 NewWindow 设置为触发事件的 CoreWebView2,则新窗口将接管现有的 CoreWebView2。

如果您想控制带有新 WebView2 的新窗口,您需要创建自己的包含新 WebView2 的新窗口(或任何合适的 UI)并将 CoreWebView2NewWindowRequestedEventArgs.NewWindow 属性设置为新的 CoreWebView2。

【讨论】:

  • 谢谢,我会试一试。
  • 您是否碰巧有一些示例代码(创建一个新窗口)或一些文档?我正在尝试这样做(使用 WPF),但是当我初始化 Webview2 并调用 EnsureCoreWebView2Async 时,Task 由于某种原因永远不会完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2022-01-16
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多