有谁知道一种方法来检测只有一个 Web 应用程序的单个实例在 Chrome 中运行?我目前正在使用使用 localStorage 的标志,但是当浏览器崩溃之类的东西时,该标志仍然存在,所以下次我尝试访问该应用程序时它会给我一个错误,因为它认为另一个实例已经在运行。
问问题
151 次
2 回答
0
一些想法:
用新实例覆盖旧实例。
在应用程序初始化时,创建一个新的“应用程序 id”,将其覆盖到 localStorage(无论它是否存在);
在应用程序生命周期内,不时检查此标志。如果它被更改为另一个值,这意味着这个实例应该被“覆盖”,所以退出。
使用时间戳作为标志。
在app生命周期内,以固定的时间间隔(如1s、10s等)将当前时间戳更新到flag中;
在应用程序初始时,将当前时间戳与此标志进行比较:
如果它“足够短”,您可以假设应用程序当前正在运行,并拒绝继续;
如果它“足够长”,则意味着最后一个实例意外退出,您可以“安全地”运行这个新实例,并可能提供一些有用的信息。
于 2013-04-03T05:16:48.190 回答
0
根据我对 Session Cookies 的评论,据我所知,Chrome 为所有选项卡(每个进程)维护相同的会话,因此它可能是您的理想解决方案,特别是因为您希望/需要在 Chrome 关闭后清除会话向下。
以下是其他一些具有相反问题的相关 Stack Overflow 线程:
您仍然可以将持久值(跨会话值)保存在常规 cookie/本地存储中。
于 2013-04-07T09:01:30.010 回答