他の人たちと同じように、私はモバイル ブラウザで実行されている JavaScript コードと phonegap webuiview で実行されている JavaScript コードの違いを見分けようとしています。標準的な解決策は、イベントが発生するのを待つことです。deviceready
イベントが発生すると、phonegap にいることがわかるからです。しかし、どのくらい待ちますか?
ユーザーに座って待ってほしくないので、できるだけ早く実行したいコードがあります。しかし、初期化する場合は、phonegap が初期化される前に実行したくありません。私が探しているのはdevicenotready
、aftercordova.js
コードが実行され、アタッチするものがないと判断されたときに発生するイベントのようなものです。または、コードバがまだロードされていることと、コードバがロードをあきらめたこととの違いを知るためにポーリングできるいくつかの変数。違いはありますか?
私はこの解決策が嫌いですが、これは私が思いついた最高のものです。これより良いものがあれば教えてください:
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);
}