【问题标题】:WebView2 NewWindowRequested missing windowName from anchor of window.open()来自 window.open() 锚点的 WebView2 NewWindowRequested 缺少 windowName
【发布时间】:2021-07-16 08:42:25
【问题描述】:

我已经使用 WebView2 几天了,我遇到了一个问题,我需要为特定 URL 打开一个新窗口。

首选方法是使用锚目标或window.open() 函数在 HTML 中使用触发器,但我没有找到在 NewWindowRequested 事件中获取实际窗口名称的方法。

此事件确实有一组 WindowFeatures 代表来自 window.open() JavaScript 函数的 WindowFeatures 但不包含窗口名称。

谁有什么建议给我?

【问题讨论】:

  • 设置e.Handled = true并提供一个新的CoreWebView2窗口,然后设置NewWindow属性。 WindowFeatures 对象可用于定义新窗口的属性。

标签: .net winforms webview2


【解决方案1】:

在 WebView2 应用窗口名称的逻辑后引发 NewWindowRequested 事件。也就是说,如果窗口名称用于现有窗口,则将导航该现有窗口,而不是引发 NewWindowRequested 事件。因此,在大多数情况下,您不需要窗口名称。

如果您出于其他原因需要窗口名称,例如从 Web 内容向 NewWindowRequested 事件处理程序提供额外信息的辅助通道,我们目前正在将 Name 属性添加到 NewWindowRequested 事件参数中,您可能会将其视为未来预发布的 WebView2 nuget 包中的实验性 API。 (Spec)

【讨论】:

  • 嗨,大卫。我想这就是我一直在寻找的答案。我确实需要我们的要求的名称,因为我们从代码管理允许的窗口(具有允许窗口的 url 的白名单),但确实使用 html 事件来确定窗口是否首先被初始化。目前,我们使用 url 作为解决方法来跟踪。
  • 我想我需要等待这个 Name 属性被添加到 API 中。预计何时将其包含在版本中?
  • 不确切的时间。也许下一个预发布的 nuget 包可以将其作为实验性 API 包含在内。
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
相关资源
最近更新 更多