未捕获的TypeError:对象#<object>在file:///android_asset/www/index.html </object>中没有方法'exec'

时间:2012-11-25 18:49:49

标签: javascript android cordova phonegap-plugins

  • 使用PhoenGap 2.2.0
  • 执行\ bin \ create C:\ Temp \ Test com.test测试
  • 有以下输出
  

Microsoft(R)Windows Script Host Version 5.8       版权所有(C)Microsoft Corporation。保留所有权利。

Creating new android project...
Building jar and js files...
Copying template files...
Copying js, jar & config.xml files...
Copying cordova command tools...
Updating AndroidManifest.xml and Main Activity...
  • 导入的项目
    • 在eclipse(4.2.0)上做了
    • 文件&gt;新&gt;项目&gt; Android&gt;来自现有代码的Android项目
    • 选择文件夹C:\ Temp \ Test
    • 选中“将项目复制到工作区”
  • 进行更改
    • 已检查res \ xml \ config.xml且行<plugin name="Notification" value="org.apache.cordova.Notification"/>已存在
    • 检查index.html是否包含cordova-2.2.0.js
    • 案例#1打开index.html并从
    • 修改

<script type="text/javascript"> app.initialize(); </script>

<script type="text/javascript">
function showAlert(msg){
navigator.notification.alert(msg);
}
document.addEventListener("deviceready", showAlert('You are the winner!'), false);
app.initialize();
</script>

我收到以下错误 11-25 10:29:58.399: E/Web Console(14604): Uncaught TypeError: Cannot call method 'alert' of undefined at file:///android_asset/www/index.html:40

    • 案例#2打开index.html并从
    • 修改

<script type="text/javascript"> app.initialize(); </script>

<script type="text/javascript">
function successAlert(){}
function errorAlert(){}
function showAlert(msg){
cordova.exec(successAlert, errorAlert, "Notification","alert", [msg]);
}
document.addEventListener("deviceready", showAlert('You are the winner!'), false);
app.initialize();
</script>

我收到以下错误 11-25 10:25:06.575: E/Web Console(14149): Uncaught TypeError: Object #<Object> has no method 'exec' at file:///android_asset/www/index.html:42 }

我确信我错过了一些东西......只是因为我无法得出结论。请帮帮我。

1 个答案:

答案 0 :(得分:11)

这将立即调用showAlert,而不是在事件触发时延迟:

document.addEventListener("deviceready", showAlert('You are the winner!'), false)

而是这样做

document.addEventListener("deviceready", function() {
    showAlert('You are the winner!')
}, false)