Opera:无法从 window.open() 获取加载事件

Opera: Can't get load event from window.open()

本文关键字:获取 加载 事件 open window Opera      更新时间:2023-09-26
var openedWindow = window.open("test.html", "title");
openedWindow.addEventListener("load", function() {
    console.log("received load event");
}, false);

我想从打开的窗口中获取加载事件。上面的代码有效,但在 Opera 11.62 中没有调用回调函数(在其他浏览器上工作)。

编辑:当我在0ms超时后注册事件时,它可以工作:

var openedWindow = window.open("test.html", "title");
window.setTimeout(function() {
    openedWindow.addEventListener("load", function() {
        console.log("received load event");
    }, false);
}, 0);

似乎是 Opera 中的一个已知错误 - 我已经将内部错误报告 (CORE-46278) 向前推了一点。

我能想到的唯一解决方法是从弹出内容中添加回调 - 类型 opener.popupLoaded()。但是,这也可能提供性能优势 - 您可以在弹出窗口的脚本环境准备就绪并且要与之通信的脚本正在运行时开始与弹出窗互,而不是等待加载事件。