使用Javascript获取为域打开的所有窗口

使用Javascript获取为域打开的所有窗口,javascript,Javascript,我想知道javascript中的一种方法,通过它我可以获得一个域的所有打开窗口 我知道下面的方法- 假设我在wind0上,有三个链接,点击这里,我编写了以下代码- var win1=window.open('page1','name1');//link1 onclick var win2=window.open('page2','name2');//link2 onclick var win3=window.open('page3','name3');//link3 onclick 上面的代码

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

我知道下面的方法-

假设我在wind0上,有三个链接,点击这里,我编写了以下代码-

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上的页面被刷新,数组的内容丢失了

现在我无法确定该域打开了多少个窗口

如何打开一个域的所有窗口


谢谢

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

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

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

家长:

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

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

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

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

家长:

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

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

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

是的,这似乎是一种非常实用的方法。向上投票。本地存储只存储字符串。仍然是有效的方法。仍然不需要使用localStorage,除非您需要不相关的窗口进行通信。这个问题是关于从同一页打开的窗口的。@Daniel谢谢你的回答。我不能使用浏览器localstorage/sessionstorage,因为我没有使用html5。现在我在cookie中添加了打开的窗口的名称,然后我可以使用这些窗口。是的,这似乎是一种非常实用的方法。升级。仅本地存储存储串。仍然是有效的方法。仍然不需要使用localStorage,除非您需要不相关的窗口进行通信。这个问题是关于从同一页打开的窗口的。@Daniel谢谢你的回答。我不能使用浏览器localstorage/sessionstorage,因为我没有使用html5。现在我在cookie中添加了打开的窗口的名称,然后我可以使用它们。