2012-10-25 12 views
5

私はphonegapテンプレートを使用してHTML5/JQueryプロジェクトを作成しました。私はローカルデータベースに情報を保存しようとしています。現在、私はテストするためにシミュレータElectricMobileStudio2012を使用しています。 私はエラー受け付けております:このコード行に "SECURITY_ERR DOM例外18を":Security_ERR:DOM例外18 PhoneGapを使用したopenDatabase()

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

答えて

3

私は同様の問題がありました - それゆえ、私はこの問題につまらない。

は、すべてのlocalStorage呼び出しがdevicereadyブロック内で実行されていることを確認します:

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

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

私はこれを入れて、それが呼び出されることはありませんでした... – ekatz

+0

あなたはこれをどこに追加したのですか?どのようにそれをテストしていますか? 通常のブラウザでテストすると、決して起動しません。 – Fraccus

+0

はい、これは修正されました。 – shamittomar

関連する問題