Проблема с нашим мобильным приложением (приложение для домашнего экрана) началась с того, что с iOS 13 началось сообщение об отсутствии поддержки базы данных html5.
Он пытается определить поддержку WebSQL с помощью следующего кода:
function getDBType() {
if (typeof window.openDatabase == "function") {
return "WebSQL";
}
return "IndexedDB";
}
К сожалению, это сообщение о том, что, несмотря на то, что WebSQL был удален из Safari 13 , WebSQL доступен только для того, чтобы исключить его позднее, когда он попытается вызвать window.openDatabase()
.
При ближайшем рассмотрении кажется, что происходит нечто странное:
(typeof window.openDatabase == "function") == true
(typeof window.openDatabase == "undefined") == true
(typeof window.openDatabase == "randomstring") == false
window.openDatabase == [object Function] /* not native function */
Тестовая страница: http://locutus.sorcerer.co.uk/demo/safari-openDatabase.html
Итак, вопрос в том, как правильно протестировать поддержку WebSQL.это будет работать на Safari 13?
Одна мысль состоит в том, чтобы сделать следующее, чтобы обнаружить отсутствие поддержки Safari 13 (с комментарием, объясняющим кажущийся бессмысленным тест)
if (typeof window.openDatabase == "function" && typeof window.openDatabase != "undefined") {
return "WebSQL";
}
Примечание.: Возможно включить WebSQL в Safari 13 на настройках iOS, Safari -> Дополнительно -> Экспериментальные функции -> отключить опцию «Отключить WebSQL».Работает только в приложении Safari, хотя приложения Safari на домашнем экране все еще не получают поддержку WebSQL.