2014-06-12 8 views
4

코드 노바를 사용하여 하이브리드 android app을 만들고이 함수를 사용하여 데이터베이스 객체를 반환하는이 함수는 app의 모든 곳에서 잘 작동합니다.잡히지 않은 오류 : SECURITY_ERR : DOM 예외 18 파일에서 : ///android_asset/www/js/DB.js

function openDB() { 
     var dbUser = null; 
     var dBVersion = localStorage.getItem("db_version"); 
     if (dBVersion == null) { 
      try { 
       if (!window.openDatabase) { 
        console.log('db init failed'); 
       } else { 
        dbUser = window.openDatabase("dbname", "1.0.1", "local", 100000); 

       } 
      } catch(error) { 
       console.log(e); 
       if (e.name == "INVALID_STATE_ERR") { 
        console.log("Invalid database version."); 
       } else { 
        console.log("Unknown error " + e + "."); 
       } 
      } 
     } else { 
      dbUser = window.openDatabase("dbname", dBVersion, "local", 100000); 
     } 
     console.log(dbUser); 
     //initialize tables 
     if (dbUser != null) 
      createTables(dbUser); 
     return dbUser; 
    } 

하지만 난 페이스 북, 포 스퀘어 같은 소셜 플러그인을 사용하여 데이터베이스에 액세스하고 오류를

Uncaught Error: SECURITY_ERR: DOM Exception 18 at file:///android_asset/www/js/DB.js:27 
dbUser = window.openDatabase("dbname", dBVersion, "local", 100000); 

을 줄 내 애플 않을 수 다음 앱으로 돌아가 내 응용 프로그램은 늘 수 빈 될 때 데이터베이스에 액세스합니다.

+0

inAppBrowser 플러그인을 사용하여 facebook/foursquare로 이동 하시겠습니까 ?? – AtanuCSE

+0

아니요, facebook 용 cordova 플러그인을 사용하고 로그인하고 데이터를 공유하면 데이터베이스에 액세스 할 수 없으며이 오류가 발생합니다. – user3732629

답변

0

언제 코드를 실행합니까?

post을 확인하면 장치 준비가 완료된 후에 만 ​​데이터베이스 쿼리를 실행해야합니다. 따라서 코드바에서 발생한 deviceready 이벤트가 발생할 때까지 기다리십시오.

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

참고 :이 기능은 더 이상 브라우저가 아닌 휴대 전화에서만 실행됩니다.

이전 코도바 버전에는 데이터베이스 크기 제한도 있다고 생각합니다. 100000 꽤 임의적 인 것 같습니다. 그렇지 않습니까?

희망이 도움이됩니다.