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

时间:2012-05-08 13:36:10

标签: javascript load window opera

var openedWindow = window.open("test.html", "title");

openedWindow.addEventListener("load", function() {
    console.log("received load event");
}, false);

我想从打开的窗口获取load事件。上面的代码可行,但回调函数不会在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);

1 个答案:

答案 0 :(得分:0)

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

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