2013-02-20 19 views
0

我有包含从以前的Ajax调用嵌套对象我的父窗口中的对象,但为了简单起见,我们说,它看起来像这样:我怎样才能可靠地分配对象到新创建的窗口(window.open)

var myStuff = { id:1, computer:"ZX Spectrum" }; 

我需要打开一个弹出窗口并将对该对象的引用传递给它。因此,我有:

this.oPopup = window.open("/my/page.htm", "MyPopupTarget", opts, false); 
this.oPopup.myStuff = myStuff; 

通常能正常工作,但我偶尔会2号线发生的例外,有时我得到在弹出的窗口出现时,发现“的MyStuff”变量不存在异常。

我怀疑这是一个时间问题,但我想知道如何可靠地关闭myStuff对象。我应该将它包装在setTimeout()中吗?有没有我可以听的活动?

谢谢。

+1

我建议将弹出窗口覆盖到父窗口中。然后,您不必担心计时:在打开弹出窗口之前使其可用,并且弹出窗口在加载时可以抓取它。 – 2013-02-20 16:10:04

+0

谢谢黑暗猎鹰。我原本是在这个前提下工作的。我从某个地方读到,自上而下会更可靠,但我不得不回到原来的建议来源,并摒弃它的推理。谢谢。 – 2013-02-20 16:24:33

回答

0

如果您提供的是正在抛出的异常类型,这将有所帮助。

可能是新窗口在填充数据之前访问数据的一个线程问题。您可以尝试创建窗口对象并分配“myStuff”变量,然后分别调用Open方法,这样所有数据在打开之前都会被分配。

+0

我发现了错误并警告了异常的属性。然而,只有三个属性(fileName,lineNumber和columnNumber)所有有用和正确的值,但没有type属性(期望空引用或未定义或类似)。 我们正在使用FireFox(最新版)。 (e) { var s =“”; for(n in e) s + =“。”+ n +“=”+ e [n] +“\ n”; 提醒(S); } – 2013-02-20 16:34:11

相关问题