如何访问弹出窗口生成的弹出窗口?

时间:2015-04-24 09:49:53

标签: javascript

我想在我的应用程序中实现以下行为:

1)我在我的应用程序的网页上打开一个弹出窗口,显示一个新的.aspx网页。

2)在此弹出窗口中,可能会生成另一个弹出窗口,打开另一个.aspx网页。

3)在我的网页上,当我按下一个按钮时,我想关闭我生成的弹出窗口(没问题)和弹出窗口弹出窗口,如果它们没有被用户关闭。

我认为这可以通过在javascript中使用应用程序全局变量来完成(我的意思是可以从任何aspx文件访问)或者可能有一些函数提供对创建的弹出窗口的引用但我找不到它

我设法做的最多的是在第一个弹出窗口中创建一个引用新弹出窗口的全局变量,但是如果我尝试从我的父窗口关闭它会产生错误,因为它试图搜索它所定义的全局变量并且很明显没有找到它。

有关如何实现这一目标的任何想法?谢谢。

2 个答案:

答案 0 :(得分:2)

根据answer on experts-exchange.com

在打开孙子的窗口中尝试:

window.opener.w = window.open("newpage.htm");

现在您可以使用w.close()

从主窗口关闭孙子

因此,第一个子窗口将变量分配给它的父级,因此父级引用了孙子。

答案 1 :(得分:1)

您可以在第一个弹出窗口中向主体添加onunload事件,当第一个窗口自行关闭时,该事件将关闭第二个窗口。

因此打开第二个弹出窗口的代码可能如下所示:

var popup_window = window.open('...');

关闭它的功能是

function close_child_window()
{
  popup_window.close()
}

对于第一个弹出窗口中的onunload事件,

<body onunload='close_child_window();'>