有一个target=_blank链接。链接页面中的脚本使用了window.opener,并且已经使用了很多年,但是现在它在iOS上已经失效,因为window.openernull。我能做什么?

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

  • 我没有跨域链接。
  • 我在Safari和Chrome中都看到了null值,其他人在其中一个看到了该值,但在另一个中却没有看到。
  • 我有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/

    10-15 19:05