【问题标题】:How to make the user not duplicate browser tabs?如何让用户不重复浏览器标签?
【发布时间】:2019-11-13 20:50:33
【问题描述】:

有一项任务是使项目的每个网页不重复。那些。用户不应由于在同一浏览器中注意力不集中而打开同一网页的多个副本。请提出具体的解决方案。

【问题讨论】:

  • 在该页面上设置会话存储中的一些键并在页面加载检查该键是否已存在于会话存储中,然后将其重定向到其他页面(一个快速的想法:P)但您还需要删除它在某些特定条件下键入
  • 差异浏览器或设备呢?或者这样可以吗?
  • @AnsBilal ,没错!但是本地存储

标签: javascript local-storage browser-tab


【解决方案1】:

如果满足一个条件 — 每个页面都有自己的唯一标识符,这个任务可以很简单地解决。我有这个 $('body').attr ('id')。 让我们调用函数 noDuplicateTabs 并在每次页面启动时调用它。 我们使用本地存储:

let noDuplicateTabs = function (pageName) {
  localStorage.getItem(pageName)
  ? window.close()
  : localStorage.setItem(pageName, 'open');

  window.onbeforeunload = function () {
     localStorage.setItem(pageName, '');
  };
}

因此,我们在函数中传递页面的名称,使用与页面名称对应的 localStorage 键检查是否存在值。 如果找到具有非空值的键,则关闭页面,如果没有,则将值写入“打开”。

我们还使用了窗口的 onbeforeunload 属性,该属性在重新加载或关闭页面之前起作用。在这种情况下,我们将删除该值。 现在在同一个浏览器中不会有重复了。

【讨论】:

  • 会话存储存在于一个选项卡中,如果用户打开另一个选项卡,那么她将无法使用相同的会话存储。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2018-10-05
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
相关资源
最近更新 更多