问题标签 [indexeddb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
831 浏览

web-applications - Web 应用程序的最佳大容量本地存储选项是什么?

我正在使用 jquery mobile 构建一个 Web 应用程序,该应用程序将包含大量需要缓存以供离线访问的图像,并且我正在寻找实现此目的的最佳方法。

我本来只是打算为图像创建一个缓存清单文件,但是太多了,并且超出了大小限制。我也考虑过Indexeddb,但它似乎还没有太多支持。

该解决方案需要同时适用于 Android 和 iOS,并且还可以在 Web 浏览器中访问。总存储容量可能需要在 15-20 MB 左右。有什么好的选择吗?

另外,我对网络应用程序没有太多经验,因此您可以提供的任何示例都会很棒。

0 投票
1 回答
970 浏览

php - 使用 javascript 将图像读/写到 IndexedDB

我需要帮助为 Web 应用程序编写 javascript (jquery?) 以将一组图像保存到 IndexedDB,然后将它们加载到 html 页面中。

我有两个 html 页面, img.html 只是这种格式的图像列表:

和 index.html,我的主页,其中包含一系列这种格式的图像标签:

我希望用户能够单击一个按钮将所有图像从 img.html 加载到 IndexedDB,然后单击另一个按钮从 IndexedDB 读取图像并将它们插入到 index.html 中的适当图像标记中( img.html 中的 'image-id' 对应于 index.html 中相应的 img 标签 id)。

另外,是否可以设置一个 cookie(或其他方法),在一定时间后会导致数据库被擦除?我希望能够强制用户大约每周一次从服务器重新加载图像。

我不擅长 javascript 或 indexeddb,所以任何帮助或示例都会很棒。

0 投票
4 回答
10305 浏览

javascript - 如何同步访问 indexedDB?

indexedDB 有一个规范说您可以同步访问索引数据库,但尚未实现。

我只是想知道是否有办法让它手动同步,

我的 JavaScript 看起来像这样,

那么你能在里面放一些东西让它等到 onsuccess 方法被调用后再继续吗?

我之所以要这样做是因为上面的代码被包裹在这个方法中,

所以它是一个 ESRI 瓦片层(它将瓦片加载到我网页上的地图上),并且该方法需要立即返回特定瓦片的 url。如果图像尚未缓存在数据库中,它将是加载图像的 URL,或者是这个,

其中BASE64DATA是以前缓存的数据库中的数据。

我之前为此使用了 localStorage,它可以同步工作,但是有 5MB 的限制,所以我想我会尝试使用 indexedDB。

0 投票
2 回答
831 浏览

nosql - IndexedDB 中带有标签模型的文档

我有歌曲和标签。标签可以是“记录位置”或“最后记录日期”之类的类型。

在关系模型中,我将有一个包含 song_id 和 tag_id 信息的连接模型。但是在像 indexeddb 这样的文档库数据库中,我会将标签及其信息直接存储在文档中。我想知道如果我没有很多独特的标签,从长远来看,这是否不会导致 DB bload?

如果另一首歌曲需要其中一个标签,而该标签已在另一首歌曲中使用,我将有一个重复的标签。

我当然也可以在这里使用连接存储,但这也包括手动获取 2 个表。

我对模型有几个问题:

  1. 我应该有歌曲和标签商店吗?
  2. 附加到每首歌曲的标签的批量更新是如何执行的?
  3. 我可能需要哪些指标才能做到这一点?

我的主要方面是通过标签值搜索(并按类型过滤)。

0 投票
17 回答
107566 浏览

google-chrome - 如何删除索引数据库?

我正在从事一个涉及使用 IndexedDB 的项目。当我开始了解这项技术时,我需要能够手动删除 indexedDB,以便重新开始。

我在 Firefox 中找到了方法,但在 Google Chrome 中找不到方法。

我尝试删除此文件夹的内容(我使用的是 Mac):

{home}/Library/Application Support/Google/Chrome/Default/IndexedDB

但似乎 Chrome 仍然在任何地方都有数据库,所以我无法重新开始。

0 投票
1 回答
1035 浏览

html - 在 Chrome 中未触发 IndexedDB onversionchange 事件

我在 Firefox 和 Chrome 中使用 html5 规范中的 IndexedDB API。

有些东西没有按预期工作,我想在这里分享它,因为我不知道这是我的错还是浏览器错误。

根据API ,当您打开与本地数据库的连接并且使用的版本号大于数据库版本号时,会触发一个名为onversionchange的事件。我的问题是这个事件在 Firefox 中被触发,而不是在 Chrome 中。

一些尝试几种模式的示例代码:

即使我更改版本号,onversionchage 事件也不会被触发。

UPDATE 正如ebidel所回答的,Chrome 实现不遵循当前规范,因此,为了拥有跨浏览器客户端代码,我们需要处理两种情况:onversionchange事件和database.version手动比较。

以下是一些带有代码示例的链接: Chromium google groupHTML5 Rocks!

0 投票
3 回答
2918 浏览

javascript - 使用 indexedDB 时获取“setVersion”不是函数错误

我尝试使用以下代码来测试 IndexedDB 的性能。该代码是从http://www.html5rocks.com/en/tutorials/indexeddb/todo/修改的,它在 chrome 中运行良好,但在 Firefox 10 中失败,说“db.setVersion 不是函数”。我想知道如何修改代码以使其在 Firefox 中工作?

0 投票
3 回答
804 浏览

html - 从 IndexedDB 条目中保存 Arraybuffer

可以在 indexedDB 中存储 blob 和数组缓冲区(如您在此处看到的)。我的问题是,我将 pdf 文件存储在存储中,并希望在用户单击特定链接时“下载”它们。是否可以从本地 indexDB 数据库“下载”文件?

0 投票
3 回答
2291 浏览

indexeddb - indexedDB 中不区分大小写的搜索

有人可以告诉我是否可以使用索引、openCursor 和 keyRange 对 indexeddb 对象存储执行不区分大小写的搜索...。
我可以区分大小写并设法使用 toUpperCase 函数实现某些东西,但是有很多不同的这是不可行的...
欢迎任何帮助...谢谢...尝试示例:

更新
这就是我最终实现的内容:涵盖和可能性的四个范围,即 FA、fA、Fa、fa... 这仅在第一个字母上完成,即“F”

var boundKeyRangeUpper = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'Z'); var boundKeyRangeUpper2 = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'z'); var boundKeyRangeLower = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'z'); var boundKeyRangeLower2 = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'Z');

上面的搜索结果存储在另一个 objectStore 中,但它们的描述为大写,因此 FISH、FRUIT、FRESH SALAD...是大写的...到目前为止,这不是一个理想的解决方案,但是它可以工作并且可以快速满足我的需求...也许我们最终会得到不区分大小写的搜索,也许不会...

0 投票
1 回答
2102 浏览

javascript - 未捕获的 TypeError:使用 indexedDB 时 Chrome 中的类型错误

我正在尝试设置 indexeddb 存储以在 chrome 中使用。但是Uncaught TypeError当我尝试建立READ_WRITE交易时,我得到了一个。

我无法找到有关使用 webkitIDB 的最新信息。所以我在这里基本上是盲目的。任何想法我做错了什么?我错过了这方面的好消息吗?

设置:

保存功能:

已创建请求objectStore,并确认this.dbTransaction已定义。