2012-06-02 17 views
5

Używam navigator.network.connection.type, aby uzyskać status sieci urządzenia. Ale to pokazuje błądPhonegap/Cordova - TypeError: Wynik wyrażenia 'navigator.network' [undefined] nie jest obiektem

TypeError: Result of expression 'navigator.network' [undefined] is not an object. 

Próbowałem z PhoneGap 1.0.0, 1.7.0 Cordova, Cordova 1.7.0rc1, ale wciąż ten sam błąd.

Działa dobrze na iOS, ale nie na Androida. Czy ktoś może mi w tym pomóc?

Oto mój kod:

<script type="text/javascript" charset="utf-8"> 
    document.addEventListener("deviceready",onDeviceReady,false); 

    function onDeviceReady() { 
     checkConnection(); 
     loaddb(); 
    } 
    function checkConnection() { 
     alert(navigator.network); 
     if(navigator.network==undefined) { 
      window.localStorage.setItem("internetAccessFlag","false"); 
     } else { 
      var networkState = navigator.network.connection.type; 
      var states = {}; 
      states[Connection.UNKNOWN] = 'Unknown connection'; 
      states[Connection.ETHERNET] = 'Ethernet connection'; 
      states[Connection.WIFI]  = 'WiFi connection'; 
      states[Connection.CELL_2G] = 'Cell 2G connection'; 
      states[Connection.CELL_3G] = 'Cell 3G connection'; 
      states[Connection.CELL_4G] = 'Cell 4G connection'; 
      states[Connection.NONE]  = 'No network connection'; 

      if(networkState==Connection.UNKNOWN || networkState==Connection.NONE) { 
       window.localStorage.setItem("internetAccessFlag","false"); 
      } else { 
       window.localStorage.setItem("internetAccessFlag","true"); 
      } 
      //alert(window.localStorage.getItem("internetAccessFlag")); 
     } 
    } 
</script> 

EDIT: - Używam Cordova 1.7.0 i plugins.xml ma

<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/> 

Czy coś muszę z tym zrobić?

+0

Zobacz http://stackoverflow.com/a/10216239/1321873 – Rajesh

+0

To nie wydaje się być problemem. Mam poprawnie podaną ścieżkę i nazwę. – ilight

+1

Czy czekasz na zdarzenie "deviceready", zanim spróbujesz uzyskać dostęp do właściwości navigator.network.connection.type? –

Odpowiedz

2

Jest to kod, który działa doskonale do mnie:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script> 
     <script type="text/javascript" charset="utf-8"> 

    var deviceInfo = function(){ 
     alert(navigator.network.connection.type); 
    } 

    function init(){ 
     console.log("GOT AN ONLOAD!!!") 
     document.addEventListener("deviceready", deviceInfo, true); 
    } 
    </script> 
    </head> 
    <body onload="init();"> 
     A body... 
    </body> 
</html> 

Także, kiedy przeniósł się z iOS na Androida użyłeś Android wersję cordova.js? Na każdej platformie jest zależna od platformy cordova.js.

+0

Dzięki Simon. Wydaje się, że to działa :) – ilight

+0

Tak, dobra odpowiedź –

+0

@ Simon MacDonald, hii dałem ten sam kod jak powyżej, ale nie udało mi się uzyskać, używam pliku cordova-2.0.0.jar, pomóż mi –

Powiązane problemy