遇到了我们的移动应用程序(主屏幕浏览器应用程序)的问题,因为它从iOS 13开始就开始报告不支持html5数据库。
它尝试使用以下代码检测对WebSQL的支持:
function getDBType() {
if (typeof window.openDatabase == "function") {
return "WebSQL";
}
return "IndexedDB";
}
[不幸的是,这报告说,尽管WebSQL为removed from 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
所以问题是,如何正确测试适用于safari 13的WebSQL支持?
一个想法是要执行以下操作来检测Safari 13的缺乏支持(带有注释来解释似乎毫无意义的测试)
if (typeof window.openDatabase == "function" && typeof window.openDatabase != "undefined") { return "WebSQL"; }
侧注:可以在iOS上的Safari 13中启用WebSQL,设置为Safari->高级->实验功能->禁用“禁用WebSQL”选项。虽然仅在Safari应用程序中有效,但主屏幕野生动物园应用程序仍不支持WebSQL。
在我们的移动应用程序(主屏幕浏览器应用程序)中遇到了一个问题,因为它从iOS 13开始就开始报告不支持html5数据库。它尝试通过以下方法检测对WebSQL的支持...
我们的代码使用if (!window.openDatabase) throw 'No WebSQL support';
,这似乎足以检测iOS13上的禁用设置