有一个target=_blank
关联。链接页面中的脚本使用window.opener
,这已经工作了很多年,但现在它在 iOS 上被破坏了,因为window.opener
is null
。我能做些什么?
有很多旧的(一些very旧)“window.opener 为空”问题,以及铬虫 https://bugs.chromium.org/p/chromium/issues/detail?id=136610该项目已于 2016 年关闭。这似乎是一个随着版本的变化而出现的问题。它有很多变体,但我看不到真正有效的解决方案。我的情况和一些旧问题之间的主要区别:
- 我没有跨域链接。
- 我在 Safari 和 Chrome 中都看到了 null 值,其他人在其中一个中看到了 null 值,但在另一个中却没有看到。
- I have
target=_blank
, not window.open()
经过大量搜索,我发现了这个:
https://bugs.webkit.org/show_bug.cgi?id=190481 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/ 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 https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Experimental_features#Security)但与 Apple 不同的是,他们的文档清楚且正确地将其标记为稳定版本中未启用的实验。
要恢复旧的行为,您需要添加rel="opener"
to the <a>
元素。 MDN 提到了这一点,而不是window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window/opener我正在查看的页面window.opener
停止工作,但在一个名为链接类型 https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types,我只有在知道答案后才能找到。他们将其标记为“实验性的,请勿在生产代码中使用”,但我认为我别无选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)