我已经追逐这个错误几个小时了。应用程序在模拟器中运行良好,但在设备上失败。我已经在这个应用程序上工作了几个星期,主要是使用模拟器进行调试。我等待设备就绪事件,然后运行以下命令:
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 被触发后调用,它仍然有效。