我目前在我的项目中使用PhoneGap 2.7.0并且代码在iOS上运行没有错误。当我尝试在android上运行相同的代码时(除了Cordova javascript文件,我知道Android的不同之处)我收到了这个错误:
05-21 22:02:25.630 1663-1663/com.###.### D/Cordova: onPageFinished(file:///android_asset/www/index.html)
05-21 22:02:25.640 1663-1663/com.###.### D/CordovaLog: Uncaught Function required as first argument!
05-21 22:02:25.640 1663-1663/com.###.### E/Web Console: Uncaught Function required as first argument! at file:///android_asset/www/cordova-2.7.0.js:627
以下是我在index.html中使用的JavaScript:
<script type="text/javascript">
var app;
document.addEventListener("deviceready", function()
{
app = new AppWrapper();
}, false);
</script>
我不确定问题是什么。我以前遇到过这个问题,但它过去已经解决了(黑魔法?)。非常感谢任何帮助。
答案 0 :(得分:14)
使用Ripple调试此问题(强烈推荐)之后,我发现一个指向未定义函数的指针应用于事件监听器(因此,不是特定于deviceready调用)。
对于未来的开发人员:检查以确保“addEventListener”调用的所有指向现有函数。看似很明显,但它确实发生了。
答案 1 :(得分:4)
检查您是否在代码中指定了回调函数的正确上下文。
确保在回调函数中不使用“this”。例如,
var app = {
init : function() {
document.addEventListener("deviceready", this.deviceready, false);
},
deviceready : function() {
app.appWrapper = this.createAppWrapper();//watch out who is "this", you should use "app" but not "this"
},
createAppWrapper : function() {
return new AppWrapper();
}
};
app.init();