使用JavaScript检测同一应用程序的多个Chrome标签页打开

5

有没有办法检测同一应用程序的多个浏览器标签页是否已打开。

假设我有一个名为www.test.com的网站,并且我打开了4个标签页。

有没有办法在JavaScript中检测到已打开多个标签页?


这回答解决了您的问题吗?如何防止用户在多个标签页中打开我的网站? - Pere Joan Martorell
2个回答

4
你可以使用我的sysend.js库,它使用localStorage在打开的标签页/窗口之间发送消息。你只需要用以下代码完成:
sysend.on('notification', function() {
   sysend.broadcast('multiple');
});
sysend.on('multiple', function() {
   // this will fire n-1 times if there are n tabs open if n > 1
   alert('multiple pages');
});
sysend.broadcast('notification');

JSFIDDLE


2

确实有一种方法,但不能保证总是正确:

window.onload = function() {
  var applicationCount = localStorage.getItem("applicationCount");
  if (!applicationCount) {
    applicationCount = 0;
  }
  localStorage.setItem("applicationCount", ++applicationCount);
}

window.onbeforeunload = function(e) {
  var applicationCount = localStorage.getItem("applicationCount");
  if (!applicationCount) {
    applicationCount = 1;
  }
  localStorage.setItem("applicationCount", --applicationCount);
};

它使用localStorage,该存储区在选项卡之间共享。但请注意,如果浏览器崩溃,该值仍将被保存。

我知道,谢谢,我正在尝试检查页面上的用户不活动情况。我已经为此制定了逻辑,唯一的问题是,如果用户打开多个选项卡,如果他在第一个选项卡中不活动,他将从所有其他选项卡中注销...而我不想要这样。 - Vesko Vujovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接