5MB 是一个硬性限制,这是愚蠢的。 IndexedDB 为您提供了大约 50MB,这是更合理的。为了更容易使用,请尝试 Dexie.jshttps://github.com/dfahlander/Dexie.js https://github.com/dfahlander/Dexie.js
Update:
对于我简单的键值目的来说,Dexie.js 实际上仍然是一种矫枉过正,所以我编写了这个更简单的脚本https://github.com/DVLP/localStorageDB https://github.com/DVLP/localStorageDB
这样你就有了 50MB 并且可以获取和设置类似的值
// Setting values
ldb.set('nameGoesHere', 'value goes here');
// Getting values - callback is required because the data is being retrieved asynchronously:
ldb.get('nameGoesHere', function (value) {
console.log('And the value is', value);
});
复制/粘贴下面的行ldb.set()
and ldb.get()
从上面的例子将变得可用。
!function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){o.k=e,o.v=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}();