在Safari 13中检测WebSQL支持(或其缺乏)

问题描述 投票:0回答:1

遇到了我们的移动应用程序(主屏幕浏览器应用程序)的问题,因为它从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的支持...

safari ios13
1个回答
0
投票

我们的代码使用if (!window.openDatabase) throw 'No WebSQL support';,这似乎足以检测iOS13上的禁用设置

© www.soinside.com 2019 - 2024. All rights reserved.