window.opener为null(iOS 12.3.1 Safari和Chrome)

时间:2019-07-16 15:27:00

标签: javascript ios window.opener

有一个target=_blank链接。链接页面中的脚本使用window.opener,并且已经使用了多年,但是现在由于window.openernull而在iOS上已被破坏。我该怎么办?

有很多旧的(有些非常旧的)“ window.opener为空”问题,还有一个Chromium bug于2016年关闭。这似乎是一个问题并带有版本。它有很多变体,没有解决方案,我可以看到它确实有效。我的情况与一些较旧的问题之间的主要区别:

  • 我没有跨域链接。
  • 我在Safari和Chrome中都看到了null值,其他人却在其中一个看到了空值。
  • 我有target=_blank,而不是window.open()

1 个答案:

答案 0 :(得分:0)

经过大量搜索,我发现了这一点

https://bugs.webkit.org/show_bug.cgi?id=190481

  

摘要:实验:锚点上的target = _blank应该暗示rel = noopener

这:

https://webkit.org/blog/8475/release-notes-for-safari-technology-preview-68/

  

将锚点上的target =“ _ blank”更改为暗示rel =“ noopener”

从我收到的来自iPhone用户的投诉中,我可以肯定,这一重大变化已经出现在Safari的稳定版本中,即使那些标记为“实验”和“预览”的链接是我可以找到的唯一文档。关于它。

Mozilla已为Firefox(https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Experimental_features#Security)记录了类似的功能,但与Apple不同,他们的文档清楚,正确地将其标记为该稳定版本未启用的实验。

要恢复原来的行为,您需要向rel="opener"元素添加<a>。 MDN并不是在window.opener停止工作的window.opener页面上而是在名为Link types的页面上提到这一点,只有在我知道答案后才能找到它已经。他们将其标记为“实验性的,请勿在生产代码中使用”,但我认为我没有选择。