2012-03-06 34 views
2

如果我有两个(或更多)选项卡在同一个域中打开,是否有一种简单的方法来感知另一个的存在(以便控制什么计算I做)?我知道有一个window.open()函数,但我不打开另一个窗口。相反,想象一下用户会使用两个标签mydomain.com。检测相同域的其他选项卡/窗口的存在

我已经开始编写一些使用HTML5本地存储的代码,其中我周期性地留下消息并检查消息,但这看起来有些复杂。

回答

-2

使用html5会话存储,您可以在窗口之间共享数据,因此每次打开给定域的窗口时都可以增加会话存储变量。

+0

不错,但让我们说窗口1来得快,我的变量numWindows现在1.窗口2来得快,numWindows = 2,如果窗口1被关闭,我也没办法递减,因为我无法预测何时会发生,因此是我的柜台将关闭。 – zenna 2012-03-06 02:07:35

+0

或者我可以使用存储事件? – zenna 2012-03-06 02:08:14

+0

您可以使用事件window.onbeforeunload检测何时关闭窗口,以便您可以在此时执行一些代码。 – mpm 2012-03-06 04:24:31

2

在localStorage中设置一个计数器(当打开一个新的选项卡时递增计数器)并且依赖于onbeforeunload在关闭标签时递减计数器并不是一个可靠的解决方案,因为如果你强制退出浏览器,onbeforeunload监听器将不会被执行,因此计数器不会递减。

我们,如果你有1个选项卡打开,你的“tabs_opened” localStorage的计数器1.出于某种原因,你必须强制退出浏览器的说。当您重新打开浏览器并重新访问同一网站时,“tabs_opened”计数器现在将变为2,因为“tabs_opened”计数器没有递减。

我很抱歉,我所说的并不完全是一个答案(但我不能添加评论,因为我没有足够的声望来添加评论)。我只是想指出这个边缘案例。

相关问题