9

我有一个基于 Web 的 Android 应用程序,它使用 WebSQL 进行存储。出于某种原因,在某一点调用openDatabase(响应按钮单击)会导致DOMException带有消息的 a "SECURITY_ERR: DOM Exception 18"

请注意,我没有使用 PhoneGap。

我在这里问的主要问题是: DOMException 18 on 的可能原因是什么openDatabase

更多细节:仅当数据库尚不存在时才会发生此异常。如果它已经存在,它将按预期工作。进行调用的函数openDatabase在应用程序的另一部分中使用并且工作正常。

到目前为止我已经尝试过

  • 减少数据库的大小 - 应该不是问题,因为它是由应用程序的另一部分创建的。
  • 我已经检查了外部存储权限 - 再次,应该不是问题。
  • 我在某处读到插入的 USB 电缆可能会导致此问题 - 在这种情况下不是导致它的原因。

编辑: 这是命令的样子:

db = openDatabase('my_database', '1.0', 'My database description', 5*1024*1024, function() {});
4

2 回答 2

2

我发现它与数据库的允许大小有关。如果您尝试在 iOS 上打开大于 50mb 的数据库,则会收到此错误。

于 2013-04-04T05:38:06.120 回答
1

根据规范规范,它仅由两个原因引起

  • 如果请求违反策略决定(例如,如果用户代理配置为不允许页面打开数据库),用户代理可能会引发 SECURITY_ERR 异常而不是返回数据库对象。

  • 如果 origin 不是方案/主机/端口元组,则抛出 SECURITY_ERR 异常

于 2013-01-26T05:17:37.990 回答