要求在新窗口中运行功能,但它仍然在父窗口上运行

时间:2012-12-19 20:55:54

标签: javascript popup onload

我在javascript中定义了一个新窗口,如下所示:

var r = window.open("", "rgroup", "status=1,width=800,height=600");

我有一个打印某些输出的函数,我试图像这样运行它:

r.onload = runproduct();

但它仍然在主父窗口上运行。

我必须补充一下,我不是试图从父窗口给出运行顺序,而是从第二个新窗口开始,所以为了缩短它,我有:

1)主窗口(功能出现在这里)

2)第二个窗口(我从这里给出订单)

3)第三个窗口(这是我希望输出发生的地方)

修理起来容易吗?我正在摸不着为什么命令在主要的第二个窗口上运行一个函数,工作,但是从第二个窗口向第三个窗口发出命令不会...

感谢您的任何澄清!这有点令人困惑......

1 个答案:

答案 0 :(得分:1)

函数将变量上下文包含在创建时,而不是在它们运行时。即你的runproduct()正在使用它的变量范围链创建上下文(主窗口)。无论何时运行,对globals或其他闭包变量的任何引用都将在主窗口中显示。

要解决此问题,您可以编写runproduct()函数以明确引用窗口参考。 E.g。

var r;
function runproduct() {
  console.log(window); // refers to main window
  console.log(r); // refers to second window
}
r = window.open(...etc...);