2012-06-02 9 views
5

Sto utilizzando navigator.network.connection.type per ottenere lo stato di rete del dispositivo. Ma mostra l'errorePhoneGap/Cordova - TypeError: il risultato dell'espressione 'navigator.network' [indefinito] non è un oggetto

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

ho provato con PhoneGap 1.0.0, 1.7.0 Cordova, Cordova 1.7.0rc1, ma ho ancora ottenere lo stesso errore.

Funziona perfettamente su iOS ma non su Android. Qualcuno può aiutarmi con questo?

Qui è il mio codice:

<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: - Sto usando Cordova 1.7.0 e plugins.xml ha

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

C'è qualcosa che devo fare con questo?

+0

Si prega di consultare http://stackoverflow.com/a/10216239/1321873 – Rajesh

+0

Questo non sembra essere il problema. Ho il percorso e il nome specificato correttamente. – ilight

+1

Stai aspettando l'evento "deviceready" prima di provare ad accedere alla proprietà navigator.network.connection.type? –

risposta

2

Questo è un codice che funziona perfettamente bene per me:

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

Inoltre, quando si è spostato da iOS ad Android avete usato la versione Android del cordova.js? C'è una piattaforma dipendente da cordova.js per ogni piattaforma.

+0

Grazie Simon. Sembra che questo funziona :) – ilight

+0

Sì, buona risposta –

+0

@ Simon MacDonald, hii ho dato lo stesso codice di sopra ma non riesco a ottenere, sto usando il file cordova-2.0.0.jar, per favore aiutami –

Problemi correlati