【问题标题】:indexedDB cross-browser not there yet?indexedDB 跨浏览器还没有?
【发布时间】:2015-06-02 10:09:32
【问题描述】:

有没有其他人发现在 Chrome 中创建的 IndexedDB 存储在 Firefox 中不可见,反之亦然?
我在每个浏览器的 google.com 上创建了一些,但我只能从创建它的浏览器中看到那些。这告诉我 IndexedDB 还没有准备好迎接黄金时段

【问题讨论】:

    标签: indexeddb


    【解决方案1】:

    有没有其他人发现在 Chrome 中创建的 IndexedDB 存储在 Firefox 中不可见,反之亦然?

    是的。

    您寻求的行为不是 IndexedDB 的设计目的。

    【讨论】:

      【解决方案2】:

      当您再次运行相同的 URL(在新选项卡或不同的浏览器中)时,浏览器将查看 IndexedDB 是否已经存在,如果存在,则检查新请求的版本和现有的IndexedDB 是否相同。

      没有现有的 IndexedDB:
      如果 IndexedDB 已经不存在,那么它将创建一个新的。现在在您的情况下,由于您在不同的浏览器中运行它,因此第一次 IndexedDB 将不存在,因此将创建一个新的。 *当打开新数据库时,onupgradeneeded 被触发,这是创建新模式的地方。* 因此,基本上您在 Chrome 中看到的所有数据在 Firefox 中都将不可见,反之亦然反之亦然。 这正是您的情况。

      现有 IndexedDB 但版本号不同:
      如果 IndexedDB 已经存在,并且新请求的版本号与现有数据存储不同,则 onsuccessonupgradeneeded 都会被触发。这也意味着您看不到旧数据。

      现有的 IndexedDB 和相同的版本号:
      如果 IndexedDB 已经存在,并且新请求的版本号与现有数据存储相同,则只会触发 onsuccess 而不会触发 onupgradeneeded。这与简单地打开数据存储区以供访问一样好,因此可以看到与之前相同的数据。

      附带说明,onsuccessonupgradeneeded 的触发顺序是 - onupgradeneeded 将首先触发(如果触发),因为这是您创建方案或数据存储的地方,然后 onsuccess 事件将被触发,您可以在其中保存数据库处理程序以供将来进行选择、更新等操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-19
        • 2010-12-21
        • 2011-11-15
        • 2011-06-08
        • 2011-03-03
        • 2012-09-30
        • 2013-05-12
        • 2013-09-11
        相关资源
        最近更新 更多