有一个target=_blank
链接。链接页面中的脚本使用window.opener
,并且已经使用了多年,但是现在由于window.opener
是null
而在iOS上已被破坏。我该怎么办?
有很多旧的(有些非常旧的)“ window.opener为空”问题,还有一个Chromium bug于2016年关闭。这似乎是一个问题并带有版本。它有很多变体,没有解决方案,我可以看到它确实有效。我的情况与一些较旧的问题之间的主要区别:
target=_blank
,而不是window.open()
答案 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的页面上提到这一点,只有在我知道答案后才能找到它已经。他们将其标记为“实验性的,请勿在生产代码中使用”,但我认为我没有选择。