通常のMonaca/Cordovaの起動時の処理
通常、アプリ起動時の処理はcordovaが利用可能になるdevicereadyイベント発火によって行います。
document.addEventListener('deviceready',function() {
// 起動時の処理
}, false );
ところが、これだとMonaca IDE等のプレビューでは動作しません。プレビューは、wwwをマウントしている
だけなので、cordova.jsを持っていないからです。以後、cordova.jsを持っていないアプリを、「非Cordovaアプリ」と呼ぶことにします。
なるべくプレビューでテストをしたい場合、起動時の処理もプレビューで行いたいものです。
Onsen UIを使っている場合
もしOnsenUIを使っているならば、非常に簡単で
ons.ready( function() {
// 起動時の処理
} );
が使えます。ons.readyで指定した関数は、cordovaが組み込まれている時は、devicereadyイベントが発火後にしか呼ばれないからです。(cordovaが組み込まれていない時は、単にonsen UIが利用可能になった時点で呼ばれる)
Onsen UIを使っていない場合
少し面倒ですが、readystatechangeイベントの発火を待ちます。このイベント後、readyStateがcompleteになっていれば、少なくともcordova.jsの読み込みは(もしあれば)終わっているはずです。そこで、window.cordovaが定義されていればcordova、そうでなければ非cordovaとして、初期処理を行うことができます。
ただし、cordovaだったとしても、まだdevicereadyが呼ばれているかは分からないので、ここでさらにdevicereadyのイベントの発火を待ちます。
結局コードは次のようになります。
document.addEventListener('readystatechange',function() {
if (document.readyState === "complete") {
if (window.cordova) {
document.addEventListener('deviceready',function() {
// Cordovaアプリの時の初期化処理
alert("This is Cordova");
} , false );
} else {
// 非Cordovaアプリの時の初期化処理
alert("This is not Cordova");
}
}
} , false);