如何从一系列打开的窗口中引用“原始”开启窗口?

时间:2014-07-17 15:05:51

标签: javascript

我有一个网络应用程序(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成为正确的值。

1 个答案:

答案 0 :(得分:1)

您可以在打开窗口时更改窗口的开启属性:

var wnd = window.open(...);
if(window.opener)
{
  wnd.opener = window.opener();
}

虽然这是未经测试的:)

可能需要在if语句中更改条件的性质。基本上,您要确定窗口是否具有父窗口,如果窗口具有父窗口,则为其子窗口指定相同的父窗口。在原始的opener中,window.opener可能是未定义的,或者为null。不确定:))