【发布时间】:2018-11-28 15:44:45
【问题描述】:
我正在使用由 Sasi Varunan here 发布的这段代码
<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>
代码的工作方式与魅力相似 - 完全按照我的意愿行事 - 检测应用程序是否已在另一个选项卡浏览器或什至在另一个浏览器窗口中打开。
据我了解:
应用程序第一次启动时会发生以下情况:
- 应用设置
openpages键和Date.now()值。 - 因为1.存储事件监听启动
onLocalStorageEvent事件。 - 因为
openpages键存在,所以用Date.now()设置page_available键 - 当以下应用启动时,它们会在存储中找到
page_available键(第二个 if),警报被触发,我可以将它们重定向到错误页面。
问题:
如果我关闭所有浏览器窗口并在新的窗口中重新启动应用程序,一切仍然正常。
这是我不明白的,因为page_available 密钥仍然存在于存储中(没有人被删除),如果和那个警报,应用程序应该继续第二个......但这没有发生.
【问题讨论】:
-
你可以阅读更多关于
localstoragehere