在其他选项卡中更改indexedDB条目时收到通知

时间:2015-10-20 13:23:09

标签: javascript-events local-storage indexeddb

如果用户在多个选项卡中打开Web应用程序的多个实例,则可以通过注册localStorage事件侦听器向任何实例通知任何其他实例所做的storage更改。接收这种通知的标签然后可以作出反应,例如根据更改更新UI。

索引数据库似乎没有为此类通知提供类似方便的机制。是否必须使用localStorage来发送"发送"每当对索引数据库进行更改时,都会通知其他选项卡?唯一的另一种选择可能是民意调查,这显然不如storage事件。

2 个答案:

答案 0 :(得分:14)

目前没有为Indexed DB定义的“观察者”API。但是,它位于功能请求列表中,Mozilla和Google都有类似的提案。

https://github.com/w3c/IndexedDB/issues/51

这就是说:是的,你需要提出一些自定义的交叉标签通信机制,例如轮询,存储事件,设置MessageChannel链接(Chrome),BroadcastChannel(Firefox)或使用服务工作者作为客户之间的接力。

NEWS FLASH!

Chrome有一个实验性Indexed DB Observers API。您需要使用--enable-experimental-web-platform-features运行chrome才能使用它,因此它在生产中无用。我们很乐意收到反馈意见 - 提交bugs on the github repo

答案 1 :(得分:1)

更新

  1. Dexie现在有一个Observables插件,以防您开始新项目:https://dexie.org/docs/Observable/Dexie.Observable
  2. Oleg在Ionic储存包装纸上扎实地勾了一下。但这可以为任何本地存储库创建。实体工程。 https://medium.com/@OlegVaraksin/how-to-make-ionic-storage-reactive-acdd8996f1e6