Javascript 如何防止同一网站打开多个标签页?

Javascript 如何防止同一网站打开多个标签页?,javascript,session-cookies,session-state,url-redirection,Javascript,Session Cookies,Session State,Url Redirection,我有一个场景,防止同一个网站在浏览器的多个打开的标签页。我的想法是,当用户第一次从浏览器打开一个网站时,很好,当用户生成新的标签页或外部链接以再次打开同一个网站时,我们应该将其重定向到已打开的网站。 我不知道如何实施。能给我一些线索吗?谢谢。也许可以使用本地存储 Window.onload=function(){ if(localStorage.getItem('windows')===1){ window.close(); }else{ localStorage.setItem("wi

我有一个场景,防止同一个网站在浏览器的多个打开的标签页。我的想法是,当用户第一次从浏览器打开一个网站时,很好,当用户生成新的标签页或外部链接以再次打开同一个网站时,我们应该将其重定向到已打开的网站。
我不知道如何实施。能给我一些线索吗?谢谢。

也许可以使用本地存储

Window.onload=function(){

if(localStorage.getItem('windows')===1){

window.close();

}else{

localStorage.setItem("windows",1);
}

}

Window.onbeforeunload=function(){
localStorage.setItem("windows",0);
}

我最近遇到了一个类似的问题,我必须防止多个窗口/选项卡在同一本地存储上运行

解决方案是使用:每当另一个(!)窗口更改此窗口使用的本地存储时,每个窗口都会收到一个StorageEvent

因此,诀窍是为localStorage定义一个“虚拟”键,让每个窗口在该键中写入一些随机值,以便让使用相同localStorage的所有其他窗口接收StorageEvent:

  window.addEventListener('storage', () => {
    window.alert('another window or tab is working on the same localStorage')
  }, false)

  localStorage.setItem('Sentinel',Math.random())

“我们应该将其重定向到已打开的一个”--这到底是什么意思?+
window.focus()
不能为同一网站打开多个选项卡页您不能(也不应该)这样做。用户可以随时打开,使用其他浏览器或其他计算机打开网站的其他视图。所以,基本上你无法阻止这一切。您的网站应该能够处理查看相同状态的多个选项卡。因此,如果由于某种原因,
onbeforeunload
未被触发-用户将永远无法打开网站?localstorage仅提供给HTML5,是吗?并且,如果您的浏览器崩溃或计算机突然关闭,则不会清除localstorage项,你再也无法打开你的页面了。不是很好的失败模式。只需通过JS设置/读取会话cookie,而不是本地存储