Javascript 为什么WebSQL不适用于使用PhoneGap制作的iOS应用程序?

Javascript 为什么WebSQL不适用于使用PhoneGap制作的iOS应用程序?,javascript,jquery,ios,cordova,Javascript,Jquery,Ios,Cordova,我刚刚将我的PhoneGap应用程序移植到iOS平台,我正在测试的iPad(以及xCode提供的模拟器)似乎不想与WebSQL正常工作 我想我已经把这个问题追根究底了。基本上,当我尝试打开/创建数据库时,应用程序只是挂起,不会继续超过这一点 这是我的代码剪辑 var SQLAPI = function() { self.Init = function() { // DB Name, Verion Number, Text Description, Estimate

我刚刚将我的PhoneGap应用程序移植到iOS平台,我正在测试的iPad(以及xCode提供的模拟器)似乎不想与WebSQL正常工作

我想我已经把这个问题追根究底了。基本上,当我尝试打开/创建数据库时,应用程序只是挂起,不会继续超过这一点

这是我的代码剪辑

var SQLAPI = function()
{
    self.Init = function()
    {
        // DB Name, Verion Number, Text Description, Estimated Size of DB
        var size = 1000 * 1024 * 1024;
        if(IsMobile())
        {
            document.addEventListener("deviceready", function()
            {
                alert("Started Device Ready");
                self.db = window.openDatabase("MyDB", "1.0", "My Database", size);
                alert("Started Made DB");
                alert("Started DB");
            }, false);
        }
        else
        {
            self.db = window.openDatabase("MyDB", "1.0", "My Database", size);
            alert("started DB 2")
        }
    };
};
问题出现在以下代码中

alert("Started Device Ready");
self.db = window.openDatabase("MyDB", "1.0", "My Database", size);
alert("Started Made DB");
alert("Started DB");
第一个提示“已启动设备准备就绪”的警报被触发,因此会出现一个提示框,提示该文本

然后它尝试运行window.openDatabase,此时会发生一些事情,因为它永远不会执行下一组警报


该应用程序可以在浏览器、Android设备等上运行。。。只有在iOS上才会发生此问题。

它可能无法在iOS上工作,因为您请求的数据库大小远远超过了允许的限制:1000*1024*1024==1Gb

iOS WebView中WebSQL DB的既定上限为50Mb(]

它可能在其他平台上工作,因为它们允许无限大小,或者如果请求的大小大于限制,它们将其限制在该限制

尝试将DB的大小减小到50Mb以下,例如49*1024*1024


如果您需要一个容量大于此的数据库,请考虑使用一个替换为无限存储容量的WebSQL的替代品。

是一个废弃的标准,对它的支持可能已经被删除。如果执行在该行停止,则应该有一个错误。将其封装在<代码>尝试…catch < /代码>并检查Erro。r这是被抛出的。@JonathanLonowski是的,但iOS是为数不多的几个支持它的插件之一。从WebSQL到原生SQLite插件的更改目前对我来说是不可行的…尽管这是我很想在未来做的事情,只要有合适的插件…这个插件对Android和iOS都有效吗,我看到有GitHub页面上的iOS生成失败通知。尽管生成失败通知,但SQLite插件肯定在iOS上工作。我将其与我所写的一起使用-你可以自己看到,构建和运行在iOS上很好。对于将WebSQL替换为本机SQLite的可行性,更改是一个线性过程n使用此插件,因为它是WebSQL的替代品-只需将
window.openDatabase()
替换为
sqlitePlugin.openDatabase()
,并且返回的对象上的界面完全相同。哦,哇,真的,这太令人印象深刻了。我一定会研究一下。谢谢!