2014-12-04 2 views
4

У нас есть тестовая версия для тестирования indexeddb с различными браузерами и ОС. Это просто простой тест:IndexedDB с iOS 8/Safari

 open database, add some data, retrieve some data 

То есть. Он отлично работает в Chrome (39), Firefox (новые версии), MacBook Pro с OSX 9.5, Android-браузерах.

Когда мы пытаемся использовать Ipad3 с iOS 8, страница ничего не делает. И мы тоже не видим ошибок.

Любые идеи, как исправить проблему?

Мы использовали файл 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; 

}; 

Ошибка прошивкой 8:

Тип ошибки: нуль не является объект на линии:

var request = indexedDB.open("kitta db1"); 

Любая идея, как я могу это исправить?

ответ

1

Похоже, что переменная indexedDB имеет значение NULL. polyfill делает это:

e.indexedDB=e.indexedDB||e.webkitIndexedDB||e.mozIndexedDB||e.oIndexedDB||e.msIndexedDB 

Так что установка переменной к одному из этих значений. Если эти значения не определены/null, то переменная indexedDB остается пустой.

Простой способ проверить, является ли какой-либо из этих вариантов имеет значения (менее Microsoft, Opera, и Mozilla) было бы что-то вроде следующего:

console.log('indexedDB: ', indexedDB); 
console.log('webkitIndexedDB: ', webkitIndexedDB); 

Если webkitIndexedDB не определено и IndexedDB не определен, то IOS по-видимому, не поддерживает индексированный DB.

Простой search on caniuse.com говорит, что индексируетсяDB на iOS8 и iOS8.1 поддерживается but buggy.

+0

Оба возвращают IDBFactory, который, я думаю, означает, что они не являются нулевыми, а iOS поддерживает оба. Я слышал об ошибке, но есть ли какая-нибудь работа или API, чтобы это исправить? – amol01

+0

Если они не нулевые, вам, вероятно, не нужно использовать прокладку. В вашем окружном коде есть что-то еще, что не соответствует определенному индексу indexDD. Возможно, необходим параметр версии для indexedDB.open. Возможно, использование окна делает что-то неожиданное. Попробуйте использовать имя базы данных без пробела. – Josh

+0

Я только что пробовал все: номер версии, пробуя всю комбинацию имени базы данных, по-прежнему ту же ошибку. Работает отлично с другими устройствами и браузерами, но не с iOS 8.1 с его Safari. Он работает с Safari на MacBook Pro, что для меня немного странно. – amol01

Смежные вопросы