2016-05-03 24 views
0

我正在爲後臺的IndexedDB數據庫開發iOS版Cordova應用程序。這裏是我打開的數據庫代碼:IndexedDB onupgradeneeded iOS上的事件目標爲空

indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB; 

      window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction; 
      window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange; 
      if (!indexedDB) { 
       window.alert("Your browser doesn't support a stable version of IndexedDB."); 
      } 

      console.log("openDb ..."); 
      var req = indexedDB.open(insectDbName, 21); 
      console.log(req); 

      req.onsuccess = function(evt) { 
       debugger; 
       db = this.result; 
       console.log("openDb DONE"); 
      }; 
      req.onerror = function(evt) { 
       //debugger; 
       console.error("openDb: ", evt.target.errorCode); 
      }; 

      req.onupgradeneeded = function(evt) { 
       console.log("openDb.onupgradeneeded"); 

       //debugger; 


       var versionStore = evt.currentTarget.result.createObjectStore(versionStoreName, { autoIncrement : true}); 
       console.log("versionStore created"); 
      }; 

現在,我的問題是,當我打開數據庫,該請求是沒有IDBOpenRequest對象。但事件正在解僱。當我用新版本號打開數據庫時,將調用onupgradeneeded事件。當我用當前版本打開時,將調用onsuccess事件。 問題是,對象永遠不會被創建,因爲在onupgradeneeded事件中,evt.currentTarget爲空。

我已經包含了IndexedDBshimCordova IndexedDB Plugin,但它仍然不起作用。

有沒有人遇到類似的問題?

回答

0

好吧,我發現了這個問題。我不得不使用evt.target而不是evt.currentTarget