访问子窗口对象

时间:2014-12-03 15:19:57

标签: javascript jquery

我需要在子窗口中访问JavaScript对象,这是我的代码:

var bw = window.open("broadcast.html",'broadcast');

然后我正在访问JS对象:

bw.childObj.f();

问题是,JavaScript可能在子窗口中评估时间过长,childObj有时无法在window.open之后访问onload。即使我将其放入$(bw).on('load', function() { bw.childObj.f(); }

,也会出现同样的问题
childObj

10次setTimeout(function() { bw.childObj.f(); }, 3000); 中的5次是未定义的。但是,当我这样做时:

{{1}}

我总是得到一个结果,但当然,这不是正确的确定性解决方案。

如何同步执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以尝试收听loadDOMContentLoaded事件:

var bw = window.open("broadcast.html",'broadcast');
bw.addEventListener('load', function(){
    bw.childObj.f();
});

答案 1 :(得分:0)

这是诀窍。

broadcast.html中,附加window.onload这样的事件

window.onload = function () {
    /* `fn` is not defined in `broadcast.html`, it's defined
       in another html/js file */
    fn(childObj);
}

在你的另一个html / js文件中:

var bw = window.open("broadcast.html",'broadcast');
/* we add `fn` function to `bw` object */
bw.fn = function (obj) { obj.f(); }