-3

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

4

1 回答 1

-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 属性,该属性在重新加载或关闭页面之前起作用。在这种情况下,我们将删除该值。现在在同一个浏览器中将没有重复项。

于 2019-07-03T08:00:01.653 回答