LoginSignup
2
0

More than 5 years have passed since last update.

Monacaで起動時の処理をプレビューでも行いたい

Posted at

通常の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);
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0