2012-10-25 18 views
5

Ho creato e progetto HTML5/JQuery utilizzando il modello di PhoneGap. Sto cercando di memorizzare informazioni sul database locale. Attualmente, sto usando il simulatore ElectricMobileStudio2012 per testare. Sto ricevendo l'errore "Security_ERR: DOM Exception 18" in questa riga di codice:Security_ERR: DOM Eccezione 18 openDatabase() utilizzando PhoneGap

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

Ecco il mio codice. Mi è stato bloccato su questo per giorni e ho anche provato ad utilizzare queste righe di codice per aggirare l'errore:

navigator.openDatabase = window.openDatabase = DroidDB_openDatabase; 

window.droiddb = new DroidDB(); 

Ecco il mio codice:

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); 
    } 
} 

risposta

3

ho avuto un problema simile - quindi mi inciampa su questo problema.

Assicurarsi che tutte le chiamate localStorage esegue all'interno del blocco deviceready:

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

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

ho messo questo in, ma non fu mai chiamato ... – ekatz

+0

Dove si aggiunge questo? Come lo stai provando? Se lo provi in ​​un normale browser non si spara mai. – Fraccus

+0

Sì, questo l'ha risolto. – shamittomar

Problemi correlati