1

我想防止用户在同一浏览器(窗口或选项卡)中与我的 Web 企业应用程序进行多次连接。

我怎样才能使用 Javascript 做到这一点?

4

2 回答 2

1

您可以创建一个会话变量(日期和时间)并将其存储在 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>
于 2013-10-30T14:09:30.570 回答
1

我可以想象一个使用 cookie 或 localStorage 的解决方案:

  1. 在页面加载时:
    • 检查是否X作为 cookie 或 localStorage 存在。如果存在,则显示错误并重定向到错误页面。
    • 如果X不存在,请继续。
  2. 在页面上加载(window.unloadwindow.onbeforeunload事件)删除X
于 2013-10-30T14:10:24.680 回答