cordova - 安全错误 : DOM Exception 18 openDatabase() using Phonegap

标签 cordova

我已经使用 phonegap 模板创建了 HTML5/JQuery 项目。我正在尝试将信息存储在本地数据库上。目前,我正在使用模拟器 ElectricMobileStudio2012 进行测试。
我在这行代码中收到错误“ Security_ERR: DOM Exception 18 ”:

var db = window.openDatabase("MobileInspection", "1.0", "Mobile Inspection Database", 200000);

这是我的代码。我已经坚持了几天,我什至尝试使用这些代码行来解决错误:
navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;

window.droiddb = new DroidDB();

这是我的代码:
function SaveUserInfoLocally(data) {
    try {
        var rememberMe = $('#chkRememberMe').is(':checked')
        if (rememberMe) {
            // TODO: Save user details in local db.
            //navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;
            //window.droiddb = new DroidDB();
            var db = window.openDatabase("MobileInspection", "1.0", "Mobile Inspection Database", 200000);
            db.transaction(populateUsersTable, errorCB, successCB);
            db.transaction(queryDB, errorCB);
        }
    }
    catch (error) {
        alert(error);
    }
}

function populateUsersTable(tx) {
    try {
        var userName = window.localStorage.getItem("UserName");
        var firstName = window.localStorage.getItem("FirstName");
        var lastName = window.localStorage.getItem("LastName");
        //alert(userName + " " + firstName + " " + lastName);
        tx.executeSql("DROP TABLE IF EXISTS UserDetails");
        tx.executeSql("CREATE TABLE IF NOT EXISTS UserDetails (UserName, FirstName, LastName)");
        tx.executeSql("INSERT INTO UserDetails (UserName, FirstName, LastName) VALUES ('" + userName + "', '" + firstName + "', '" + lastName + "')");
        alert("populate");
    }
    catch (exception) {
        alert(exception);
    }
}

function errorCB(err) {
    alert("Error processing: " + err);
}

function successCB() {
    alert("success!"); 
}

function queryDB(tx) {
    try {
        tx.executeSql('SELECT * FROM UserDetails', [], querySuccess, errorCB);
    }
    catch (exception) {
        alert(exception);
    }
}

// Testing
function querySuccess(tx, results) {
    try {
        if (results) {
            alert("records");
        }
        else {
            alert(results);
        }
    }
    catch (exception) {
        alert(exception);
    }
}

最佳答案

我有一个类似的问题 - 因此我偶然发现了这个问题。

确保所有 localstorage 调用都在 deviceready 块中执行:

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

function onDeviceReady() {
    //do ALL your localstorage stuff here
}

关于cordova - 安全错误 : DOM Exception 18 openDatabase() using Phonegap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070042/

相关文章:

Android 应用在首次发布时在 Google Play 商店中被暂停

android - 在 Android Studio 与 Framework 中开发(例如 PhoneGap)

ruby - 无法安装pushmeup插件

visual-studio - 错误: SetSite failed for package [ApacheCordovaToolsPackage]

android - 适合 phonegap 应用程序的宽度和高度,至少字体在所有设备中具有相同的大小增加

ios - 唤醒记录 iOS 10

javascript - Cordova 安卓 : Getting 404 error in angular js app

android - 在 Phonegap 3/Cordova 3 中检索用户 sim 号码

git - Cordova:排除插件和平台

android - 从 Phonegap : Protocol not supported 链接到 Google Play 应用