5

navigator.network.connection.typeデバイスのネットワークステータスを取得するために使用しています。しかし、それはエラーを示しています

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

Phonegap 1.0.0、Cordova 1.7.0、Cordova 1.7.0rc1で試しましたが、それでも同じエラーが発生します。

iOSでは正常に動作しますが、Androidでは動作しません。誰かがこれを手伝ってくれますか?

これが私のコードです:

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

編集:-私はCordova 1.7.0を使用しており、plugins.xmlには

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

これと何か関係がありますか?

4

2 に答える 2

2

これは私にとって完璧に機能するコードです:

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

また、iOSからAndroidに移行したときに、Androidバージョンのcordova.jsを使用しましたか?プラットフォームごとにプラットフォームに依存するcordova.jsがあります。

于 2012-06-06T18:07:11.080 に答える
0

phonegapのバージョンを確認してから、使用している現在のバージョンのPLUGINをダウンロードします。たとえば、Cordova 3.Xの場合:http://docs.phonegap.com/en/3.3.0/cordova_connection_connection.md.html

于 2014-05-01T20:47:56.277 に答える