2014-10-01 89 views
0

我有一個用JavaScript編寫的插件,它創建/連接到一個IDB,檢查存儲器中的數據並在必要時填充數據,然後返回請求的數據。該插件在Chrome/FF中運行良好,但似乎不希望在Safari 7.1中運行。IndexedDB沒有回調

我目前遇到的問題是,當我在iOS設備上創建數據庫時,我沒有獲得成功或錯誤函數的回調,此外當我在Mac上的Safari上創建數據庫時,我得到空白錯誤返回。

以下是代碼片段,它位於稱爲數據庫的插件內的一個函數內。 VAR DBNAME =串和VAR dbVersion = 1

database = { 
    init: function(callback){ 
     //TEMP FOR DEBUG - DELETE DB IF EXISTS 
     window.indexedDB.deleteDatabase(dbName); 
     //Now create & init 
     var req = window.indexedDB.open(dbName,dbVersion); 
     console.debug('DBName/Version',dbName,dbVersion); 
     req.onabort = function(event){ 
     console.error('Aborted!',event.target,req); 
     } 
     req.onerror = function(event){ 
     console.error('DB Init',event.target); 
     } 
     req.onblocked = function(event){ 
     console.error('Blocked',event); 
     alert("Please close other tabs with this website open!"); 
     return; 
     }; 

     req.onsuccess = function(event){ 
     //Will be called after upgrade if that is called 
     console.info('success called'); 
     db = req.result; 
     console.debug(db); 
     dbOpen = true; 
     //Check Object Stores Are Correct 
     var obs = db.objectStoreNames; 
     if((!!(typeof callback == 'function'))) 
      callback.call(); 
     }; 
     req.onupgradeneeded = database.upgrade; 
     console.debug('Did something happen?',req); 
    }, 

我有所有的回調之後打印供給在端部開&參數控制檯調試open()函數之後,我有一個調試其中印刷品「沒有符合一起發生的事情「與請求一起。

在Safari瀏覽器的Mac當我運行該功能,將打印到控制檯這樣的: https://www.dropbox.com/s/vrshdjhzazg2ixo/Screenshot%202014-10-01%2018.11.01.png?dl=0

當iOS上運行,並且具有在Mac Web檢查打開一個錯誤甚至不生產的,似乎只是跳過所有內容 - 輸出與上面的圖像相同,但沒有產生控制檯錯誤。

但是,最奇怪的是,即使在Mac上的Safari上產生錯誤,當我刷新頁面時,有一個數據庫顯示在資源窗格中,但其中沒有存儲; https://www.dropbox.com/s/fqg4tbqp1vzffp1/Screenshot%202014-10-01%2018.14.08.png?dl=0

如果任何人都可以分享一些經驗或者舉個手我將不勝感激這一點 - 在試圖破解它現在小時,其駕駛我周圍的彎曲 - 尤其是因爲它在其他瀏覽器!

非常感謝,傑登

+0

你使用indexDB的websql填充? – dandavis 2014-10-01 17:29:14

回答

0

爲什麼不等onsuccess回調方法deleteDatabase