手机浏览器不支持 IDBObjectStore.getAll

最近在学习IndexDB,使用了IDBObjectStore.getAll,发现手机上不支持。

后面,查阅了mdn:

手机浏览器不支持 IDBObjectStore.getAll

的确是不支持,且可以看到这个函数现在兼容性很差。

解决方法:

1.使用 IDBObjectStore.openCursor(兼容性较好) 代替,

2.自己模拟一个来兼容:

if (typeof IDBObjectStore.prototype.getAll != 'function') {
IDBObjectStore.prototype.getAll = function(params) {
var request = {}; var req = this.openCursor(params);
req.onerror = function(evt) {
if (typeof request.onerror == 'function') {
request.onerror(evt);
}
}; var rst_values = [];
req.onsuccess = function(evt) {
if (typeof request.onsuccess == 'function') {
var cursor = event.target.result;
if (cursor) {
rst_values.push(cursor.value);
cursor.continue();
} else {
request.result = rst_values;
evt.target.result = rst_values;
request.onsuccess(evt);
}
}
}
return request;
}
}

  

上一篇:HDU 2795 Billboard(区间求最大值的位置update的操作在query里做了)


下一篇:java遍历HashMap的高效方法