Javascript 防止多重连接到我的web应用程序

Javascript 防止多重连接到我的web应用程序,javascript,connection,browser,Javascript,Connection,Browser,我希望防止用户在同一浏览器(窗口或选项卡)中多次连接到我的web企业应用程序 如何使用Javascript实现这一点?您可以创建一个会话变量(日期和时间)并将其存储在localStorage中。在window.load上检查它,如果它存在,则关闭窗口,或阻止进一步加载 编辑: 我创建了一个完整的解决方案,也许我将来会发现它的一些用途: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&

我希望防止用户在同一浏览器(窗口或选项卡)中多次连接到我的web企业应用程序


如何使用Javascript实现这一点?

您可以创建一个会话变量(日期和时间)并将其存储在localStorage中。在window.load上检查它,如果它存在,则关闭窗口,或阻止进一步加载

编辑:

我创建了一个完整的解决方案,也许我将来会发现它的一些用途:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test</title>
    <script>
        (function () {
            var interval = 10000; //can be modified to be faster, now it's 10 seconds
            // localStorage is available everywhere
            // sessionStorage is available only in current page / tab, 
            // so we can allow page refresh
            if (localStorage.getItem("catch") && !sessionStorage.getItem("catch")) {
                var date = new Date(parseInt(localStorage.getItem("catch"), 10));
                if (Date.now() - date < interval) {
                    //prevent further loading, hide things etc.
                    document.write('catch');
                }
            } else {
                setInterval(function () {
                    var date = Date.now();
                    localStorage.setItem("catch", date);
                    sessionStorage.setItem("catch", date);
                }, interval);
            }
        })();
    </script>
</head>
<body>
</body>
</html>

测试
(功能(){
var interval=10000;//可以修改为更快,现在是10秒
//本地存储无处不在
//会话存储仅在当前页面/选项卡中可用,
//所以我们可以允许页面刷新
if(localStorage.getItem(“catch”)&&!sessionStorage.getItem(“catch”)){
var date=新日期(parseInt(localStorage.getItem(“catch”),10));
if(Date.now()-日期<间隔){
//防止进一步装载、隐藏物品等。
文件。写入(“catch”);
}
}否则{
setInterval(函数(){
var date=date.now();
setItem(“catch”,date);
sessionStorage.setItem(“catch”,date);
},间隔);
}
})();

我可以想象一个使用cookie或本地存储的解决方案:

  • 页面加载时:
    • 检查
      X
      是否作为cookie或本地存储存在。如果存在,则显示错误并重定向到错误页面
    • 如果
      X
      不存在,则继续
  • 在页面onload(
    window.unload
    window.onbeforeunload
    事件)上删除
    X

  • 我曾经用cookie做过,但是当浏览器崩溃时(不要转到window.unload),cookie不会被删除。这就是为什么我说要存储日期时间,如果它不是最近的,这意味着window.unload过去没有运行,但是你仍然可以让它们进入。Rudy,你能一步一步地解释你的解决方案吗?@wawanopoulos我已经编辑了我的答案,并添加了完整解决方案的代码。