2012-06-02 54 views
5

Tôi đang sử dụng navigator.network.connection.type để nhận trạng thái mạng của thiết bị. Nhưng nó cho thấy lỗiPhonegap/Cordova - TypeError: Kết quả biểu thức 'navigator.network' [undefined] không phải là một đối tượng

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

Tôi đã thử với Phonegap 1.0.0, Cordova 1.7.0, Cordova 1.7.0rc1, nhưng tôi vẫn gặp lỗi tương tự.

Nó hoạt động tốt trên iOS nhưng không hoạt động trên Android. Ai đó có thể giúp tôi với điều này?

Đây là mã của tôi:

<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: - Tôi đang sử dụng Cordova 1.7.0 và plugins.xml có

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

Có điều gì tôi phải làm với điều này?

+0

Vui lòng xem http://stackoverflow.com/a/10216239/1321873 – Rajesh

+0

Điều đó dường như không phải là vấn đề. Tôi có đường dẫn và tên được chỉ định chính xác. – ilight

+1

Bạn có đang đợi sự kiện "deviceready" trước khi cố truy cập thuộc tính navigator.network.connection.type không? –

Trả lời

2

Đây là mã mà làm việc hoàn toàn tốt cho tôi:

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

Ngoài ra, khi bạn di chuyển từ iOS Android đã bạn sử dụng phiên bản Android của cordova.js? Có một nền tảng cordova.js phụ thuộc vào từng nền tảng.

+0

Cảm ơn Simon.Có vẻ như công trình này :) – ilight

+0

Có, câu trả lời tốt –

+0

@ Simon MacDonald, hii tôi đã đưa ra cùng một mã như trên nhưng không thể nhận được, tôi đang sử dụng file cordova-2.0.0.jar, hãy giúp tôi –

Các vấn đề liên quan