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)" 位置:"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) 中的页面的内容脚本 (worker) 发送消息时,会生成错误。因此,您尝试向其发送消息的工作人员已附加到用户或您的附加组件已导航离开的页面。

您的回调(从handleCompletion包装器 in执行sqlite.js)会触发此错误。可能是以下行,因为其他行看起来不错,而这一行是唯一没有源代码的行。

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

在不了解更多代码的情况下(一个完整的、可重现的示例),我不能告诉你更多。

于 2013-10-27T04:46:39.290 回答