Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught TypeError: Object #<Object> has no method 'exec' at file:///android_asset/www/index.html

  • using PhoenGap 2.2.0
  • Executed \bin\create C:\Temp\Test com.test Test
  • Had following output

Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved.

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...
  • Imported Project
    • On eclipse (4.2.0) did
    • File > New > Project > Android > Android Project from Existing Code
    • Selected the folder C:\Temp\Test
    • Checked "Copy project into workspace"
  • Making changes
    • Checked res\xml\config.xml and the line <plugin name="Notification" value="org.apache.cordova.Notification"/> is present
    • Checked that index.html has the cordova-2.2.0.js included
    • Case#1 Opened index.html and modified from

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

to

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

I get following error 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

    • Case#2 Opened index.html and modified from

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

to

<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>

I get following error 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 }

I'm sure that I missed something...just that I'm not able to conclude what is it. Please help me out.

like image 895
javadevg Avatar asked Nov 25 '12 18:11

javadevg


1 Answers

This will call showAlert immediately, instead of delaying to when the event fires:

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

Instead do this

document.addEventListener("deviceready", function() {
    showAlert('You are the winner!')
}, false)
like image 129
AndiDog Avatar answered Oct 12 '22 01:10

AndiDog