2

當用戶啓動獨立的Web應用程序時,我有以下代碼來設置數據庫及其在iDevice上的表。如果它與Safari瀏覽器的設備上使用的代碼工作正常,但如果它在Chrome中打開它引發以下錯誤僅在Chrome中出現JavaScript錯誤,在Safari中正常工作?

Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 

除了誤差,也可以防止其他功能僅在Chrome的工作,再次。 這裏是代碼,包括創建表的函數。我在Chrome上指出錯誤的代碼中添加了一條評論。

//this sets up the DB name global variable and uses it to open the DB 
     var dbName = 'CBNapp', 
     db = openDatabase(dbName, '1.0', dbName, 65536);// chrome error = UncaughtError: INVALID_STATE_ERR: DOM Exception 11 (anonymous function) line 43 
//   db = openDatabase(dbName, '1.0' /*version*/, dbName, 65536 /*max size*/); 
//opens the database when the document is loaded 
$(document).ready(openCBNappDB); 

function openCBNappDB(){ 
//this if statement checks to see if device supports offline storage 
    if (!window.openDatabase) { 
     $('add_note').innerHTML = "Browser does not support local storage." 
     return; 
    } 
// create tables in the DB 
    function dbTransaction(fn) { 
     db.transaction(fn); 
    } 
    /*create 5 tables*/ //colums in tables are not correct as of apr 25 2012 
    dbTransaction(
     function (tx) { 
     tx.executeSql('CREATE TABLE CBNapp_Usage (key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, MemberID TEXT NOT NULL DEFAULT "", NewKnife INTEGER NOT NULL DEFAULT 0, True INTEGER NOT NULL DEFAULT 0, Trivia INTEGER NOT NULL DEFAULT 0, Movies INTEGER NOT NULL DEFAULT 0, Jokes INTEGER NOT NULL DEFAULT 0, Musings INTEGER NOT NULL DEFAULT 0, Stories INTEGER NOT NULL DEFAULT 0);'); 
    tx.executeSql('CREATE TABLE CBNapp_Members (key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, MemberID TEXT NOT NULL DEFAULT "", CBNname TEXT NOT NULL DEFAULT "", Community TEXT NOT NULL DEFAULT "", BirthDay TEXT NOT NULL DEFAULT "", BirthMonth TEXT NOT NULL DEFAULT "", Gender TEXT NOT NULL DEFAULT "Male", iOS TEXT NOT NULL DEFAULT "", Device TEXT NOT NULL DEFAULT "");'); 
    tx.executeSql('CREATE TABLE CBNapp_Scores (key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, MemberID TEXT NOT NULL DEFAULT "", GameName TEXT NOT NULL DEFAULT "", TimesPlayed INTEGER NOT NULL DEFAULT 0, HiScore INTEGER NOT NULL DEFAULT 0);'); 
    tx.executeSql('CREATE TABLE CBNapp_UserPrefs (key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, MemberID TEXT NOT NULL DEFAULT "", TextSize INTEGER NOT NULL DEFAULT 14, AutoRetrieve INTEGER NOT NULL DEFAULT 0);'); 
    tx.executeSql('CREATE TABLE CBNapp_Errors (key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, MemberID TEXT NOT NULL DEFAULT "", code INTEGER NOT NULL, message TEXT NOT NULL);'); 
    } 
); 
} 

如果任何人都可以請提出具體的解決辦法得到這個與Chrome和Safari瀏覽器也將不勝感激正常工作。

我相信我在腳本中也犯了很多其他錯誤。如果有人願意花時間向我展示我應該如何改進它,我會非常感謝任何想法。我對此非常感興趣,並會請求具體建議。

回答

0

那麼它很難說肯定不知道HTML,但我猜鉻沒有分配OpenDatabase方法的窗口對象和分支一些不良的JQuery:

$('add_note').innerHTML = "Browser does not support local storage." 

「add_note '沒有意義。如果add_note是一個類,它應該是'.add_note''#add_note'如果是一個ID。

此外,由於它是JQuery,它可能不會有innerHTML方法。最快的修復假設一個ID可能會是:

$('#add_note')[0].innerHTML = "Browser does not support local storage." 

但如果它像一個文本輸入的表單元素可能會破滅。

+0

Hello Erik,謝謝你的回覆。我嘗試了兩個建議,似乎沒有任何改變。其他功能仍然不起作用,並顯示相同的錯誤。 – user1224675

相關問題