javascript - 子窗口加载事件在 Firefox 上不起作用
问题描述
当使用window.open('', 'name')
其加载事件打开一个空白子窗口时,它在 Firefox 中不起作用。虽然在 chrome 中它确实有效。
看我的stackblitz 演示 - 在 chrome 中你可以看到控制台日志消息,但在 Firefox 中你看不到。
此外,readyState
在 Firefox 中也没有按预期工作并且没有更新。
我错过了什么?如何解决这个问题?
解决方案
根据MDN 文章,window.open
返回WindowProxy
实例,它代理Window
对象包含的所有属性,包括onload
和addEventListener
。代理的主要目标是限制新创建window
的来自父级的未经授权的访问window
。访问由浏览器控制,只有当这两个选项卡都满足同源策略window
时,才允许父实例与子实例交互。如果没有此安全规则,任何人都可以直接从其代码中修改或以编程方式读取任何其他站点包含的某些信息。window
在我的机器上,即使在 Chrome 中,您的 stackblitz repro 也无法正常工作。在 Chrome 或 Firefox 中打开一个Window
具有相同来源的新文件可以解决此问题:
window.open('https://angular-child-window-load.stackblitz.io', 'kush', 'width=222, height=222, top=222, left=222');
我认为您的 Chrome 配置中可能修改了一些同源策略,或者可能存在另一个本地问题。
推荐阅读
- google-cloud-platform - 如果 Dataflow Job 失败,我想更新数据库表列以记录失败状态
- react-native - 是否有可能使用 react-navigation 3.* 同时在一个页面上有左右抽屉
- c++ - 使用 podofo 库添加重复的标题
- twilio - Twilio Autopilot,让它理解字母数字响应
- java - 如何获得画线的所有点
- unity3d - 如何在 Unity 中的材质上添加白色划痕的蒙版贴图,当基色变为黑色时,该材质保持白色?
- python - 需要帮助从纪元时间中剥离微秒
- sql - 如何规避错误消息 241(从字符串转换日期和/或时间时转换失败)
- java - Android:片段与堆叠布局
- html - 在 mat-Input 字段中聚焦时如何更改 mat-icon 颜色?