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 devは、ブラウザーによってトリガーされない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 に答える