0

私が書いているFirefoxアドオンでsqlite.jsライブラリを使用しています。

問題なく多くのデータを挿入しましたが、この非常に単純な選択をしようとすると

function selecionaUsuarioPorNome (nome, teste){
    sqlite.execute("select * from Usuario;", function(result,status){
        cm.enviaMensagem ("rows = " + result.rows + "\ncols = " + result.cows);
        for(var i=0;i<result.rows;i++){
            for(var j=0;j<result.cols;j++){
                console.log(result.data[i][j]);
            }
        }
    });
}

次のエラーが発生しました:

[17:08:29,013] [例外... 「「エラー: ページは現在非表示になっており、再び表示されるまで使用できません。」メソッド呼び出し時: [mozIStorageStatementCallback::handleCompletion]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "native frame :: :: :: line 0" data: no]

私のプロジェクトの構造は次のとおりです。

/
|
|___Lib
. . |
. . |____ main.js
. . |____ bd_manager.js
. . |____ sqlite.js

そして、main.js に main 関数を配置します。

exports.main = function (options, callbacks) {
    // quando o add-on é instalado
    if (options.loadReason == "install"){
        // call to test if I can get the user from the database.sqlite
        bd.selecionaUsuarioPorNome ("vitor", function (){});
    }
}

誰かがこのエラーを知っていますか?

どうもありがとうございました!

4

1 に答える 1

0

SQLite とは何の関係もないようです。このエラーは、コンテンツ スクリプト (ワーカー) にメッセージを送信しようとすると生成されます。コンテンツ スクリプト (ワーカー) は、ロードされていないがバックフォワード キャッシュ (bfcache) 内にあるページにアタッチされています。したがって、メッセージを送信しようとしているワーカーは、ユーザーまたはアドオンが既にナビゲートしたページに添付されています。

handleCompletionのラッパーから実行されるコールバックが、sqlite.jsこのエラーを引き起こします。おそらく次の行です。他の行は問題ないように見えますが、ソース コードがないのはこの行だけです。

cm.enviaMensagem ("rows = " + result.rows + "\ncols = " + result.cows);`

あなたのコード (完全で再現可能な例) を詳しく知らなければ、これ以上のことは言えません。

于 2013-10-27T04:46:39.290 に答える