ジオマーリン

geomerlin.com に関することを中心に。難しいことをもっと難しく書くブログ。

MonacaのInappbrowserのエラーを遅延ロードで回避

モナカに大きなプロジェクト(長いjsファイルやエラー前提のシステム)を入れるとプラグインがうまく応答しないことがある。

 

これは憶測なので違ったら指摘して欲しいけど、プラグインが動かない原因はこれ

①仕様上devicereadyイベント発火ではじめてプラグインが使用可能

②devicereadyイベントまでに、jsファイルのロードが掛かり過ぎるORエラーが起こると、発火しないもしくは、プラグインのjsが作動しなくなる

 

というわけでバカでかいプロジェクトをそのままindex.htmlに直接書いたりロードするとうごかなくなりました。

そこで<script src="js/bakadeka.js"></script>と書いて読み込んだファイルを以下に変更

<script src="src/jquery.min.js"></script>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
$.getScript("js/bakadeka.js")
}
<script>

何をしたかというと、ondevicereadyでプラグイン使用可能を確定したうえで、そのあとjsファイルを読み込んだ。(jqueryは各自でダウンロードしてコピペ+アップしてください)

ちなみにhtmlも遅延ロードしてみたが、うまく表示されなかったので諦めた。