小编Rad*_*adu的帖子

localStorage概念的误解

我在这里使用 Sasi Varunan 发布的代码

<script type="text/javascript">
        // Broad cast that your're opening a page.
        localStorage.openpages = Date.now();

        var onLocalStorageEvent = function(e){
            if(e.key == "openpages"){
                // Listen if anybody else opening the same page!
                localStorage.page_available = Date.now();
            }
            if(e.key == "page_available"){
                alert("One more page already open");
            }
        };
        window.addEventListener('storage', onLocalStorageEvent, false);
</script>
Run Code Online (Sandbox Code Playgroud)

代码就像魅力一样工作- 完全按照我想要的方式工作 - 检测应用程序是否已经在另一个选项卡浏览器甚至另一个浏览器窗口中打开。

据我了解:

第一次启动应用程序时,会发生以下情况:

  1. 应用程序设置openpages键值Date.now()
  2. 因为1.存储事件监听器启动onLocalStorageEvent事件。
  3. 因为密钥存在,所以用 Date.now()openpages设置密钥page_available
  4. 当以下应用程序启动时,它们会page_available在存储中找到密钥(第二个如果),则会触发警报,我可以将它们重定向到错误页面。

问题:

如果我关闭所有浏览器窗口并在新窗口中重新启动应用程序,一切仍然正常。

这是我不明白的,因为page_available密钥是持久的,仍然存在于存储中(没有人删除),应用程序应该继续第二个,如果并且警报......但这没有发生。

javascript local-storage

4
推荐指数
1
解决办法
1318
查看次数

标签 统计

javascript ×1

local-storage ×1