2012-06-04 5 views
1

others처럼 모바일 브라우저와 phonegap webuiview에서 실행되는 javascript 코드의 차이점을 알려 드리고자합니다. 표준 해결 방법은 deviceready 이벤트가 시작될 때까지 기다리는 것입니다.이 이벤트가 발생하면 전화 걸기가 발생했기 때문입니다. 그러나 얼마나 오래 기다리나요?PhoneGap deviceNotReady 이벤트?

내 사용자가 대기를 기다리고 싶지 않기 때문에 최대한 빨리 실행하고 싶습니다. 그러나 초기화 할 경우 phonegap이 초기화되기 전에 실행하고 싶지 않습니다. 내가 찾고있는 것은 devicenotready 이벤트와 같습니다. cordova.js 코드가 실행되고 그 뒤에 첨부 할 항목이 없을 때 발생합니다. 또는 내가로드 할 수있는 것을 포기한 cordova와 cordova의 차이를 알리기 위해 폴링 할 수있는 변수가 있습니다. 차이점이 있습니까?

나는이 솔루션을 싫어하지만, 내가 생각해 냈던 것이 최선이다. 그것은 이론적 후 실행 당신이 한 (즉시 실행할 수있는 이벤트에 아무런 대기 -

function whenLoaded(callback,timeout) { 
    var when_loaded_needs_running = true; 
    document.addEventListener('deviceready', function() { 
     if(when_loaded_needs_running) { 
      when_loaded_needs_running = false; 
      callback(); 
     } else { 
      console.log("deviceready fired too late. whenLoaded already ran."); 
     } 
    }); 
    window.setTimeout(function() { 
     if(when_loaded_needs_running) { 
      when_loaded_needs_running = false; 
      console.log("deviceready didn't fire after "+timeout+"ms. running whenLoaded anyway."); 
      callback(); 
     } 
    }, timeout); 
} 

답변

2

는 간단한 테스트가 cordova 자바 스크립트 전역 사용할 수 있는지 확인하는 것입니다 : 이것보다 더 좋은 일이있다 알려주세요 <script>은 cordova.js 포함). 실행중인 PhoneGap 버전에 따라 여러 전역 변수 중 하나를 테스트해야 할 수 있습니다.

은 단순해야한다 등 :

if(cordova || Cordova || PhoneGap) { 
    alert('hey im in a phonegap webview!'); 
} else { 
    alert('regular old browser, aw shucks'); 
} 
+0

아니. 스크립트가 작동하는지 여부에 관계없이 스크립트를로드 할 때 이러한 변수가 설정됩니다. 따라서 서버가 코드 바'script' 태그를 포함할지 여부를 어떻게 든 알았다면 사용자 에이전트가 동일하기 때문에 AFAICT는 불가능합니다. – Leopd

+0

클라이언트에 관계없이 스크립트 파일을로드하는 것은 어리석은 것처럼 보입니다. 모든 자산을 원격으로로드하고 있다고 가정합니까? 즉 모바일 웹 페이지보기와 같이 phonegap 웹보기가 index.html, phonegap.js 등을 서버에서 가져옵니다. 그렇다면, phonegap 클라이언트에 대해 그렇게하지 않는 것이 좋습니다. 귀하의 전화 갭 사용자는 자산이 들어 오기를 이미 기다리고 있으므로 초기 솔루션은 이미 경험 한 것보다 훨씬 더 많은 시간을 지연시키지 않습니다. Phonegap은 "컴파일"단계를 제공합니다. 앱 스토어에 제출하기 전에 앱을 패키징합니다. 저것을 이용하십시오. –

+0

서버에서 생성 된 HTML 페이지가 로컬 에셋을로드하는 방법이 있다면 이해할 수 없기 때문에 어떻게하는지 말해주십시오. 데이터베이스와 상호 작용하고 내 서버의 페이지를 클라이언트 측 javascript로 생성하는 모든 로직을 이동하는 경우 실제로는 그렇게 쉽지 않습니다. – Leopd