用于强制执行仅在一个选项卡中使用的单页面应用的惯用方法

时间:2015-01-08 22:50:01

标签: javascript web-storage

我创建了一个非常复杂的应用程序,它使用了IndexedDb。经过一番调查后,我发现这真的很难实现。我能想到的唯一方法就是利用Web存储(交叉表通信)来警告用户:

a)当另一个标签打开时,他无法打开另一个标签

b)如果他继续旧标签将被关闭

但用它来打扰用户真的很难看。替代方案是:

  1. 允许多个选项卡,并通过共享上下文(远期未来)使用Web存储或SharedWorker协调和同步内容,这意味着从字面上对多标准合规性进行编程(我没有资源这样做,imho it&# 39;无论如何都是毛茸茸的)
  2. 将其开发为Chrome应用,例如Postman或this test editor
  3. 还有其他选择吗?你们是怎么做到的?我觉得如果我不强制执行“只有一个标签”,那么应用程序的复杂性就会增长太多。办法。要确保应用的各个方面都能在多个标签中使用,这并不容易。

1 个答案:

答案 0 :(得分:0)

在sessionStorage中设置一个变量,并在每次检查此变量是否存在时进行检查。如果是这样,它的第二个标签就可以做出反应。

要发出第二个标签已被打开的第一个标签,您可以使用storage-Event。 只需在第一个选项卡中侦听该事件,然后在第二个选项卡中在页面加载上写一些内容。此时,事件在第一个Tab中被触发,你可以做出反应。