2012-05-11 19 views
5

Próbuję "PhoneGap" (1.7.0) aplikacji jQuery Mobile (1.1.0) muszę utworzyć aplikację dla systemu Android. Jednak otrzymuję następujący komunikat ostrzegawczy.Dlaczego program cordova.exec() działa w mojej aplikacji Android PhoneGap (1.7) przed "deviceready"?

ERROR: Attempting to call cordova.exec() before 'deviceready'. Ignoring. 

To pojawia jak może się to zdarzyć podczas $ .ajax połączeń, ale trudno mieć pewność.

Nie dzwonię do funkcji Cordova w mojej aplikacji - to czysty JQM.

Wszelkie pomysły na temat problemu. A może nie wiadomo, dlaczego funkcja cordova.exec() może zostać wywołana podczas żądania $ .ajax?

Używam aplikacji pod kontrolą Androida 4.0.3 na wirtualnym urządzeniu/symulatorze.

+0

Czy ładujesz cordova-ver.js w swoim kodzie HTML? –

+0

Masz na myśli " ', czy istnieje plik o nazwie" cordova-ver.js, gdzieś "Jeśli ten pierwszy, to tak - jest załadowany do mojego kodu HTML." – dommer

+0

Czy możesz udostępnić fragment kodu źródłowego, który demonstruje problem? –

Odpowiedz

21

Miałem podobny problem po spędzeniu kilku godzin zrozumiałem, że cordova-1.7.0.js (lub phonegap-1.7.0.js w twoim przypadku) był z iOS jako pierwotnie utworzony projekt dla iOS i zastąpił ten plik odpowiednim plikiem android JS i zaczął działać.

Cordova-1.7.0.js jest różna dla różnych platform mobilnych, użyj poprawnego pliku JS dla konkretnej platformy.

+0

Doh! Problem: zapomniałem zaktualizować go, kiedy przeniosłem się z testowania iPhone'a na Androida – dommer

+0

Masz boleśnie rację! – shaharsol

+0

Rozwiązanie mojego problemu! Dzięki! – haifacarina

0

w moim przypadku było to, ponieważ funkcja

$(document).ready()... 

nie strzelał poprawnie, więc po prostu zmienił go do javascript wersji

<body onload="init();"> 

w html i zdefiniowano funkcję

function init(){ 
    document.addEventListener("deviceready", onDeviceReady, true); 
} 

w moim pliku javascript i rozwiązał problem

Powiązane problemy