我在这里使用 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)
代码就像魅力一样工作- 完全按照我想要的方式工作 - 检测应用程序是否已经在另一个选项卡浏览器甚至另一个浏览器窗口中打开。
据我了解:
第一次启动应用程序时,会发生以下情况:
openpages键值Date.now()。onLocalStorageEvent事件。openpages设置密钥page_availablepage_available在存储中找到密钥(第二个如果),则会触发警报,我可以将它们重定向到错误页面。问题:
如果我关闭所有浏览器窗口并在新窗口中重新启动应用程序,一切仍然正常。
这是我不明白的,因为page_available密钥是持久的,仍然存在于存储中(没有人删除),应用程序应该继续第二个,如果并且警报......但这没有发生。