如何将窗口处理程序从一个页面传递到另一个(JavaScript的)

时间:2012-02-13 11:48:41

标签: javascript

我有一个非常奇怪的问题,请不要问我为什么需要这个...... 我有一个page1。 Page1有一个链接,使用window.open函数打开新窗口(第2页)。 chatWindow是一个子窗口的处理程序,从window.open函数返回。 现在我从第1页移到第3页(通过链接<a href="...." target="_self">Some Text</a>)。如果page2关闭或打开,我需要检查page3。 如何将处理程序chatWindow从第1页传递到第3页?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

在第2页和第3页,您可以使用window.opener来引用第1页。在page1中,您可以定义一个检查page2是否仍然打开的方法:window.open返回新窗口的实例,如果窗口已关闭,则返回null

请注意,如果属性位于同一个域,则只能从Windows中读取属性。如果他们来自不同的域,您可以使用window.postMessage方法启用通信。

假设它们位于同一个域中,您可以使用以下代码(概念代码):

window.page2 = window.open('...');
window.page3 = window.open('...');

// At page3:
if (window.opener && window.opener.page2 != null) { // Not null or undefined
    // Do something
}

我使用了全局变量。更好的实现可以包含命名空间:

window.openedWin = {};
window.openedWin.page2 = window.open('...');
...
// At page3:
if (window.opener && window.opener.openedWin && window.opener.openedWin.page2 ...