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,而不是本地存储