0

如果这是我忽略的简单事情,请原谅。我正在使用 PhoneGap/Cordova 平台首次涉足应用程序开发,我似乎陷入了第一个障碍。我的 deviceReady 侦听器似乎没有触发。

我的代码如下所示:

alert('0');

document.addEventListener("deviceready", function(){
    alert('1');
    db = window.openDatabase("testproject", "1.0", "PhoneGap Test", 200000);
    alert('2');
    if (dbCreated){
        alert('3');
        db.transaction(getData, transaction_error);
    } else {
        alert('4');
        db.transaction(populateDB, transaction_error, populateDB_success);
    }
}, false);

初始alert('0')(放入以确保我实际连接到文件)正在触发,但没有其他任何事情发生。

在这里的另一篇文章中。有人提示有类似问题的其他人尝试document.addEventListener("deviceready", deviceReadyFunction, true)为他们解决了这个问题,但对我没有。

作为一个附带问题,您如何在 PhoneGap 开发中调试 javascript 和检查客户端数据库?在为 web 开发时,我显然有 firebug 和许多其他工具,但是由于 PhoneGap 开发人员严重依赖不是由浏览器触发的 deviceready,我应该注意什么工具?(我在 Coda 中编写代码,但从 Xcode 编译)。

4

1 回答 1

1

我将代码放在一起,效果很好,我已经使用 Cordova 1.7 和 Android 2.2 进行了测试

    var dbCreated = false;
    document.addEventListener("deviceready",
            function() {
                alert('1');
                db = window.openDatabase("testproject", "1.0", "PhoneGap Test",
                        200000);
                alert('2');
                if (dbCreated) {
                    alert('3');
                    db.transaction(getData, transaction_error);
                } else {
                    alert('4');
                    db.transaction(populateDB, transaction_error,
                            populateDB_success);
                }
            }, false);

    function getData() {

    }

    function transaction_error() {

    }

    function populateDB(tx) {

    }

    function populateDB_success() {

    }

完整源代码 - https://gist.github.com/3064728

对于调试,使用 weinre 它是一个非常好的工具,可以在移动设备上调试 javascript 应用程序。

http://people.apache.org/~pmuellr/weinre/docs/latest/

PhoneGap 也通过 debug.phonegap.com 使用它

于 2012-07-07T04:38:38.983 回答