我在javascript中定义了一个新窗口,如下所示:
var r = window.open("", "rgroup", "status=1,width=800,height=600");
我有一个打印某些输出的函数,我试图像这样运行它:
r.onload = runproduct();
但它仍然在主父窗口上运行。
我必须补充一下,我不是试图从父窗口给出运行顺序,而是从第二个新窗口开始,所以为了缩短它,我有:
1)主窗口(功能出现在这里)
2)第二个窗口(我从这里给出订单)
3)第三个窗口(这是我希望输出发生的地方)
修理起来容易吗?我正在摸不着为什么命令在主要的第二个窗口上运行一个函数,工作,但是从第二个窗口向第三个窗口发出命令不会...
感谢您的任何澄清!这有点令人困惑......
答案 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...);