0

我想知道 javascript 中的一种方法,通过它我可以获得域的所有打开窗口。

我知道以下方式 -

假设我在 wind0 上,我有三个链接,并且 onclick 我写了以下代码 -

var win1=window.open('page1','name1');//link1 onclick
var win2=window.open('page2','name2');//link2 onclick
var win3=window.open('page3','name3');//link3 onclick

上面的代码将打开三个不同的窗口。我可以使用win1、win2、win3 objs并将它们保存在一个数组中并在以后使用它,但是假设我在wind0上的页面被刷新并且数组的内容丢失了。

现在我无法找出为该域打开了多少个窗口。

如何为域打开所有窗口?

谢谢。

4

2 回答 2

3

我敢打赌,您可以将它们推送到存储在本地存储中的值中,然后在页面卸载时将它们弹出。

于 2012-10-17T11:11:13.107 回答
0

您可以从所有窗口存储对该数组的引用。即使数组是在父窗口中创建的,它也可以在子窗口中从它们自己的范围内引用,并且不会消失:

家长:

var windowsOpen = [];
w1 = window.open(...);
windowsOpen.push(w1);
w1.windowsOpen = windowsOpen;
...

孩子们:

$(window).on("unload", function(){
  windowsOpen.filter(function(x){
    return x!=window;
  }
}

只要每个窗口可以引用同一个数组,它就会在窗口之间共享,并且可以用于通信。

于 2012-10-17T11:28:00.200 回答