我有一个网络应用程序(A)。
它打开一个新窗口(B)来做某事。
由于新窗口中的操作,我想对原始应用程序执行某些操作,这可以通过在新窗口中将原始窗口引用为window.opener
来完成。
但是,如果新窗口(B)打开其自己的新窗口(C)怎么办?
如果我在(C)中引用window.opener
,它将是窗口(B),而不是(A)。
有没有办法迫使C window.opener
成为" A" - 原来的窗口?
我正在考虑在循环中运行类似parent = current_window.opener; current_window=parent;
的内容,直到parent
为空....但如果我的一个中级窗口在过渡期间关闭,那将会失败!因此,当新窗口打开时,我需要立即强制window.opener成为正确的值。
答案 0 :(得分:1)
您可以在打开窗口时更改窗口的开启属性:
var wnd = window.open(...);
if(window.opener)
{
wnd.opener = window.opener();
}
虽然这是未经测试的:)
可能需要在if语句中更改条件的性质。基本上,您要确定窗口是否具有父窗口,如果窗口具有父窗口,则为其子窗口指定相同的父窗口。在原始的opener中,window.opener可能是未定义的,或者为null。不确定:))