有一个target=_blank
链接。链接页面中的脚本使用了window.opener
,并且已经使用了很多年,但是现在它在iOS上已经失效,因为window.opener
是null
。我能做什么?
有很多旧的(有些很旧的)“window.opener为空”问题,还有一个Chromium bug于2016年关闭。这似乎是版本附带的问题。它有很多变体,没有解决方案,我可以看到它确实有效。我的情况与一些较旧的问题之间的主要区别:
target=_blank
,没有window.open()
最佳答案
经过大量搜索,我发现了这一点:
https://bugs.webkit.org/show_bug.cgi?id=190481
还有这个:
https://webkit.org/blog/8475/release-notes-for-safari-technology-preview-68/
从我从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的页面上提到了这一点,只有在我已经知道答案后才能找到它。他们将其标记为“实验性的,请勿在生产代码中使用”,但我认为我没有选择。
关于javascript - window.opener为null(iOS 12.3.1 Safari和Chrome),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57060721/