未捕获的错误:SECURITY_ERR:文件的DOM异常18:///android_asset/www/js/DB.js

时间:2014-06-12 05:32:12

标签: android jquery-mobile cordova web-sql cordova-3

我使用cordova构建混合Android应用程序,我使用此函数返回数据库对象,它在应用程序中无处不在

    function openDB() {
        var dbUser = null;
        var dBVersion = localStorage.getItem("db_version");
        if (dBVersion == null) {
            try {
                if (!window.openDatabase) {
                    console.log('db init failed');
                } else {
                    dbUser = window.openDatabase("dbname", "1.0.1", "local", 100000);

                }
            } catch(error) {
                console.log(e);
                if (e.name == "INVALID_STATE_ERR") {
                    console.log("Invalid database version.");
                } else {
                    console.log("Unknown error " + e + ".");
                }
            }
        } else {
            dbUser = window.openDatabase("dbname", dBVersion, "local", 100000);
        }
        console.log(dbUser);
        //initialize tables
        if (dbUser != null)
            createTables(dbUser);
        return dbUser;
    }

但是当我使用像facebook和foursquare这样的社交插件并返回应用程序时,我的应用程序将无法访问数据库并给出错误

Uncaught Error: SECURITY_ERR: DOM Exception 18 at file:///android_asset/www/js/DB.js:27 
dbUser = window.openDatabase("dbname", dBVersion, "local", 100000);

并且我的应用程序变为空白,因为它无法访问数据库。

1 个答案:

答案 0 :(得分:0)

你什么时候执行你的代码?

如果您查看此post,则只应在设备准备好后执行数据库查询。所以等待从cordova触发的deviceready事件。

 document.addEventListener("deviceready", openDB, false);

请注意,这只会在手机上触发,而不会在浏览器上触发。

我认为对于较旧的cordova版本,数据库大小也有限制。 100000似乎很随意,不是吗?

希望这有帮助。