我们有一个测试用来测试带有不同浏览器和操作系统的indexeddb。 这只是简单的测试:
open database, add some data, retrieve some data
就是这样。它在Chrome(39),Firefox(新版本),MacBook Pro和OSX 9.5,基于Android的浏览器中运行良好。
当我们尝试使用iOS 8的Ipad3时,页面没有做任何事情。我们也看不到任何错误。
任何想法,如何解决问题?
我们使用indexeddb.shim.js文件来假设帮助,但仍然无效。
if (!window.indexedDB) {
window.alert("Your browser doesn't support a stable version of IndexedDB.")
}
var request = indexedDB.open("kitta db1");
request.onupgradeneeded = function() {
//create Store and etc
};
request.onsuccess = function() {
db = request.result;
};
iOS 8中的错误:
类型错误:null不是该行上的Object:
var request = indexedDB.open("kitta db1");
任何想法我该如何解决?
答案 0 :(得分:1)
看起来变量indexedDB为null。 polyfill执行此操作:
e.indexedDB=e.indexedDB||e.webkitIndexedDB||e.mozIndexedDB||e.oIndexedDB||e.msIndexedDB
所以它将变量设置为其中一个值。如果这些值都是undefined / null,则indexedDB变量保持为null。
测试这些变体是否具有值(较少的Microsoft,Opera和Mozilla)的简单方法如下所示:
console.log('indexedDB: ', indexedDB);
console.log('webkitIndexedDB: ', webkitIndexedDB);
如果webkitIndexedDB未定义且indexedDB未定义,那么iOS显然不支持indexedDB。
一个简单的search on caniuse.com表示支持iOS8和iOS8.1上的indexedDB but buggy。