WebView数据库的数量在WebView上限制为1但在Chrome本身中不受限制?

时间:2013-11-22 07:34:18

标签: android cordova android-webview

我目前正在使用Cordova开发一个应用程序,它使用window.openDatabase()来访问SQL数据库。

这在iOS上运行良好,但是在Android上却发现每当我尝试打开多个数据库时,第二个请求会抛出一个DOM异常18.所请求的数据库大小似乎没有有所作为。

  var db = window.openDatabase("test",1,"test",500); // doesn't throw an Exception
  var db2 = window.openDatabase("test2",1,"test2",500); // throws an Exception

我一直在阅读Cordova源代码,并在周围搜索,并没有找到任何描述限制的内容,除了http://developer.android.com/reference/android/webkit/WebStorage.html。它解释了每个应用程序只能有一个应用程序缓存。但是,没有提到WebSQL的明确限制。

在Chrome内部运行和作为WebView之间似乎存在差异,因为在Chrome中运行时似乎没有限制,并且不会抛出任何异常。

WebStorage类中描述的ApplicationCache限制在(Cordova)Webview上使用时是否也适用于WebSQL,或者是Cordova本身创建的限制吗?

1 个答案:

答案 0 :(得分:0)

事实证明,确实存在一个数据库的限制。解决此问题的方法是不使用WebView WebSQL存储,而是使用SQLite插件。 我使用的插件是https://github.com/lite4cordova/Cordova-SQLitePlugin

可以使用命令行界面轻松安装到cordova中:

cordova plugin add https://github.com/lite4cordova/Cordova-SQLitePlugin

这不会取代window.openDatabase,但会将其自身添加为navigator.sqlitePlugin.openDatabase。 API是一样的。

这消除了每个WebView 1个数据库的限制以及每个数据库的大小限制。