私はこのバグを数時間追跡してきました。アプリはシミュレーターでは正常に動作しますが、デバイスでは失敗します。私はこのアプリに数週間取り組んでおり、主にシミュレーターを使用してデバッグしています。デバイスの準備完了イベントを待ってから、次を実行します。
function onDeviceReady() {
setStylesheet();
console.log("Device ready");
try {
startup();
} catch (err) { console.log(err);}
}
および関数はstartup
、setStylesheet
それぞれ次のスクリプト タグを介してインクルードされます。
<script type="text/javascript" src="js/screens.js"></script>
<script type="text/javascript" src="js/stylesheets.js"></script>
setStylesheet
関数が起動し、CSS がアプリに適用されます。起動機能はありません。XCode コンソールに次のメッセージが表示されます。
2012-05-27 13:29:34.543 app[417:307] [INFO] {"message":
"Can't find variable: startup", "line":59, "sourceId":3807368,
"sourceURL":"file:///var/mobile/Applications/hash/app.app/www/index.html",
"expressionBeginOffset":1141, "expressionCaretOffset":1148, "expressionEndOffset":1148}
シミュレーターで実行すると、すべて正常に動作します。iPhone では、そのエラーがスローされます。私はscreens.jsをリントしましたが、警告しかありませんでした。このようなことの考えられる原因は何ですか?
編集:友人は、これは競合状態の問題である可能性があると示唆しました。screen.js スクリプト タグを動的に追加してtag.onload
、関数を呼び出すために使用してみました。それでも同じ問題が発生するため、それはそうではないようです。setStylesheet
onload が起動された後に呼び出されるようにも変換されましたが、引き続き機能します。