我正在使用web sql和indexeddb,但作为后备,我想使用btree/localstorage.我可以在给定浏览器/平台上的localStorage中保存多少数据?
如果没有人知道有没有办法确定javascript对象的大小?例如JSON.stringify然后乘以字符数?然后我可以写一个写入localStorage的脚本并读取以查看该值是否存在以及一旦出现错误或读取停止工作这是一个幻数.
我需要测试这个(ie9,ff,safari,chrome,opera,ipad上的safari,androids默认浏览器,android上的dolphin,android上的ff,android上的opera).
如果你可以帮我弄清楚如何告诉js字符串的大小(以字节为单位),那么我将运行测试并在此处发布结果.
只要您使用适当的IDBTransaction,就可以从单个事务中完成所有操作,而不是打开多个事务(读取表,写入表,写入另一个表等).
Mozilla说:"保持事务处于活动状态的唯一方法是对其发出请求.当请求完成后,您将获得一个DOM事件,假设请求成功,您将有另一个机会来扩展事务在那次回调中." 这有点模糊.这是否意味着如果我为DOM回调提供一个事件处理程序,我可以在该回调中的任何一点使用该事务,而不必担心事务被关闭?
https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB#Adding_data_to_the_database
var db;
var version = 1;
var request = indexedDB.open("myDB", version);
request.onsuccess(function(e) {db = e.target.result;});
// db.close(); //??? happens async and has no callback
var request2 = indexedDB.open("myDB", ++version);
request.onsuccess = function() { console.log("success"); };
request.onerror = function() { console.log("error"); }; // called if db existed when page was loaded
request.onblocked = function(){console.log("blocked");}; // called on init creation
request.onupgradeneeded = function(){console.log("onupgradeneeded");};
Run Code Online (Sandbox Code Playgroud)
我需要能够打开数据库,读取对象存储库,然后更改数据库.看起来每页加载只能改变一次db结构.
使用已弃用的setVersion方法时,这在Chrome中运行良好.
可能重复:
如何对javascript对象数组进行排序?
每次我写自己的快速排序都会比我最初的想法花费更长的时间.我有一个非常小的阵列,但仍然希望有一个方便快捷.
就像是
quicksort(myObjectArray) {
//myObject[i].key is what the sort is done on
}
Run Code Online (Sandbox Code Playgroud)
我实际上是谷歌这样做,所以如果你发布一个链接到雅虎或谷歌的前三或四页中的任何一个完整与明显不完整的代码其他为什么我会在这里问...然后你浪费你的生活去拖累stackoverflow和实际上没有回答任何问题.