2012-10-17 56 views
0

我想知道一种方法在JavaScript中,我可以通过它获得域的所有打开窗口。使用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页面被刷新并且数组内容丢失。

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

我怎样才能得到一个域的所有窗口打开?

谢谢。

回答

2

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

+0

是的,这似乎是一个非常实用的方式来做到这一点.upvoted。 –

+0

本地存储只存储字符串。仍然有效的方法。 –

+0

@JanDvorak更新了我的答案。 –

0

您可以在所有窗口中存储对该数组的引用。尽管阵列在父窗口创建的,它可以从自己范围的儿童中引用而不会消失:

父:

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

孩子:

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

由于每个窗口可以引用相同的数组,它将在窗口之间共享,并且可以用于通信。