SQLite没有在没有警报的情况下从javascript触发

时间:2011-11-03 19:02:54

标签: javascript sqlite web-applications

所以,我有一个奇怪的问题。 我正在通过Web应用程序中的javascript使用SQLite数据库。 我有一个没有被调用的函数的问题。这就是我所拥有的:

var db = window.openDatabase("database", "1.0", "Database",
        200000);
db.transaction(functionIUse, errorCB);

上述代码不起作用。 functionIUse不会被调用。但是,如果我喜欢这样:

var db = window.openDatabase("database", "1.0", "Database",
        200000);
alert('db open');
db.transaction(functionIUse, errorCB);
它突然被召唤了。任何人都可以向我解释这种行为吗?这让我很困惑。 显然,我也想知道如何让它发挥作用 - 每一次。

感谢。

1 个答案:

答案 0 :(得分:1)

你的问题肯定很奇怪,但我认为这与你的错误回调有关。

为了测试这个,我创建了以下jsfiddle

var errorCB = function(){
    alert("An Error Occured");
}
var functionIUse = function(transaction){
    alert('functionIUse Called');
}
var functionIUse2 = function(transaction){
    alert('functionIUse2 Called');
}
var db = window.openDatabase("database", "1.0", "Database", 200000);
alert('Database Has Been Opened');
db.transaction(functionIUse, errorCB);
db.transaction(functionIUse, errorCBThatDoesntExist);

执行此JavaScript函数时,我会调用函数,但函数IUse2不会调用,唯一不同的是errorCB存在但errorCBThatDoesntExists不存在。

我可能会建议使用JavaScript框架来帮助与html5sql.js等数据库进行交互。通过提供一个框架来处理HTML5 Web数据库的异步性质以及提供更清晰和更明确的回调,它可以使事情变得更简单。