0

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

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

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

r.onload = runproduct();

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

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

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

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

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

容易修复吗?我在挠头,为什么下令在主窗口的第二个窗口上运行函数有效,但从第二个窗口下令到第三个窗口却没有......

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

4

1 回答 1

1

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

要解决此问题,您可以编写runproduct()函数以明确引用窗口引用。例如

var r;
function runproduct() {
  console.log(window); // refers to main window
  console.log(r); // refers to second window
}
r = window.open(...etc...);
于 2012-12-19T21:01:16.450 回答