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

2023-12-22

有一个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(使用前将#替换为@)

window.opener 为 null(iOS 12.3.1 Safari 和 Chrome) 的相关文章

随机推荐

  • 在netbeans中向jpanel添加组件

    在过去的几个小时里 我一直在尝试弄清楚如何向窗口添加标签组件 但没有成功 我在 Netbeans 中创建了一个新的桌面应用程序项目 它附带了预先生成的代码 我想为其添加标签 但它就是不显示 我不确定为什么 因为我遵循正常的 panel ad
  • 如何修复此 ArrayAdapter 要求资源 ID 为 TextView

    我是 android 新手 我正在尝试使用 json 开发带有 gridview 和 listview 的应用程序 通过 json 我在 gridview 中显示了一组图像 并根据 gridview 的位置 我在下一页列表视图中显示结果 这
  • 找不到 com.android.support:support-annotations:26.1.0

    我有一个项目compileSdkVersion and targetSdkVersion是25 当我尝试将版本升级到26时 出现以下错误 Could not find com android support support annotati
  • Java 泛型中如何使用逆变?

    在 Java 中 协变允许 API 设计者指定可以将实例概括为某种类型或该类型的任何子类型 例如 List
  • c中的种子随机数

    我目前正在尝试自学 C 编程 我一直致力于学习随机数 我访问的许多网站都使用 time 函数作为随机数生成器的播种方法 但我读过的许多帖子和网站都说使用系统时钟作为生成随机数的方法是有缺陷的 我的问题是 我到底应该使用什么来生成真正的随机数
  • 导入cocos2d项目后,eclipse引发两个奇怪的错误:“Android Library Update”,“C/C++ Indexer”

    将cocos2d项目导入到eclipse后 会引发两个奇怪的错误 Android 库更新 C C 索引器 Error An internal error occured during C C java lang NullPointerExc
  • Spark-Cassandra:repartitionByCassandraReplica 或将数据集转换为 JavaRDD 并返回不维护分区数量?

    因此 我有一个 16 节点集群 其中每个节点都安装了 Spark 和 Cassandra 复制因子为 3 spark sql shuffle partitions 为 96 我正在使用 Spark Cassandra Connector 3
  • 您好,我有与对象检测项目相关的错误

    我有与简单对象检测相关的错误 output layers layer names i 0 1 for i in net getUnconnectedOutLayers IndexError 标量变量的索引无效 import cv2 cv2
  • 如何从 iOS 中的非 UI 线程更新 UI 标签

    我是 iOS 开发新手 我有简单的目标 c 类 MoneyTimer m 来运行计时器 从那里我想用计时器的变化值更新 UI 标签 我想知道如何从非 UI 线程访问 UI 元素 我正在使用 Xcode 4 2 和故事板 在黑莓中 只需获取事
  • 在 Javascript 中使用 Google 文本转语音

    我需要玩谷歌文本转语音在 JavaScript 中 这个想法是使用网络服务 并在某个动作上播放它 例如单击按钮 但它似乎不像加载普通的 wav mp3 文件
  • VB.NET 将 DataGridView 内容插入数据库

    Problem 我需要将 DataGridView 的内容转储到 SQL Server 数据库表中 我的 datagridview 加载正常 没有问题 我只是对 VB NET 不够熟悉 无法理解如何将这些数据放入数据库表中 代码 到目前为止
  • 在 O(1) 时间内检索堆栈中的最小元素

    我问这个问题的原因是因为我不明白为什么我认为的方式不能应用于这个特定问题 你会如何设计一个堆栈 除了push和pop之外 还有一个返回最小元素的函数min Push pop 和 min 都应该在 O 1 时间内运行 我的基本解决方案 如果我
  • Xlint:无效的绝对类型名称

    我在服务器启动时看到下面的 Spring 框架异常 gt Initialization of bean failed nested exception is gt java lang IllegalArgumentException war
  • 为什么堆栈上的项目必须具有编译时已知的大小?

    我明白为什么他们一定有大小不变 但我不明白为什么这个尺寸一定是编译时已知 即使 C 也允许在堆栈上使用可变长度数组 这个限制对 Rust 有什么帮助 即使 C 也允许在堆栈上使用可变长度数组 由于其简单的语义 C 可以相对容易地支持这一点
  • C# 中的元组展开类似于 Python [重复]

    这个问题在这里已经有答案了 在 Python 中 我们可以使用类似的语法展开元组 a b 1 2 C 中有类似的结构吗 或者访问如下元素 Tuple
  • 考虑在配置中定义“org.hibernate.SessionFactory”类型的 bean

    我是 Java EE 新手 一直在开发一个简单的 Spring Boot 项目 每次我运行它时 我都会收到此错误 请随时回答我的问题 我们非常感谢代码中的任何改进 Field sessionFactory in com example da
  • 我应该使用 cocos2D 还是 andengine?

    什么项目比较活跃 稳定 你能告诉我cocos2D和andengine之间的深层区别吗 我肯定会选择Andengine Android 版 Cocos2D 的 bug 还太多
  • VFR-Reader 在 iOS8 中崩溃

    我测试了一个当前正在 iOS8 上使用 VFR Reader Core 的应用程序 当我尝试从中打开 PDF 时 我完全崩溃了 我是唯一一个有这个问题的人吗 知道我可以在哪里搜索来纠正这个问题吗 这是崩溃报告 https gist gith
  • 会话 Cookie 与持久 Cookie

    我了解持久 cookie 与会话 cookie 的正常应用 但是 如果您可以指定会话 cookie 的过期时间 使其表现得像持久 cookie 反之亦然 除了对用户进行混淆并将会话存储在服务器上之外 使用会话 cookie 是否还有其他好处
  • window.opener 为 null(iOS 12.3.1 Safari 和 Chrome)

    有一个target blank关联 链接页面中的脚本使用window opener 这已经工作了很多年 但现在它在 iOS 上被破坏了 因为window opener is null 我能做些什么 有很多旧的 一些very旧 window