2014-12-03 108 views
0

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

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

然后我访问JS对象:

bw.childObj.f(); 

的问题是, JavaScript可能在子窗口中评估时间过长,childObj有时无法在window.open之后访问。同样的问题occures甚至当我把它放在onload

$(bw).on('load', function() { 
    bw.childObj.f(); 
} 

5的10倍childObj简直是不确定的。但是,当我这样做:

setTimeout(function() { 
    bw.childObj.f(); 
}, 3000); 

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

我该如何做到这一点同步?

回答

0

你可以试着听loadDOMContentLoaded事件:

var bw = window.open("broadcast.html",'broadcast'); 
bw.addEventListener('load', function(){ 
    bw.childObj.f(); 
}); 
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(); }