2012-05-07 5 views
6

Ich muss den Benutzer mit den folgenden Bedingungen warnen;So warnen Sie den Benutzer, wenn keine Internetverbindung besteht

  1. Zeitüberschreitung der Anforderung
  2. keine Internetverbindung
  3. Kann den Server

Hier ist der Code erreichen; Wie erfassen Sie die folgenden Bedingungen, wenn sie aufgetreten sind, und warnen Sie den Benutzer?

failure: function (response) { 
    var text = response.responseText; 
    console.log("FAILED"); 
},success: function (response) { 
    var text = response.responseText; 
    console.log("SUCCESS"); 
} 

Ich habe versucht, den folgenden Code zu überprüfen, ob das Internet erreichbar ist, aber es ist nicht in meinem Index

var networkState = navigator.network.connection.type 
    alert(states[networkState]); 
    if (networkState == Connection.NONE){ 
     alert('No internet '); 
    }; 

UPDATE **

Ich habe folgendes funktionierten. html, aber wenn ich WIFI deaktiviere, sehe ich die Warnung nicht knallen.

<script> 
function onDeviceReady() { 
    document.addEventListener("offline", function() { 
     alert("No internet connection"); 
    }, false); 
} 
</script> 
+0

Welche Fehler/Warnung auf dem Konsolenprotokoll geworfen wird? –

+0

Nichts wird geworfen. – user1315906

Antwort

1

können Sie PhoneGap's NETWORK API

Das Netzwerk Objektzugriff gibt an das Gerät des Mobilfunk- und Wi-Fi-Verbindungsinformationen verwenden.

Sie es auf folgende Weise testen können,

function onDeviceReady() { 
     navigator.network.isReachable("phonegap.com", reachableCallback, {}); 
    } 

// Check network status 
// 
function reachableCallback(reachability) { 
    // There is no consistency on the format of reachability 
    var networkState = reachability.code || reachability; 
    var states = {}; 
    states[NetworkStatus.NOT_REACHABLE] = 'No network connection'; 
    states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection'; 
    states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK] = 'WiFi connection'; 

    alert('Connection type: ' + states[networkState]); 
    } 
+0

Wo sollte ich die obigen Funktionen hinzufügen ('onDeviceReady', 'reachableCallback'). Ist es in der 'app.js'? – user1315906

+0

Sie können 'navigator.network.isReachable (" phonegap.com ", reachableCallback, {}) direkt in die Zeile einfügen, wo Sie Ihre Netzwerkverbindung testen und eine Callback-Funktion hinzufügen möchten. –

+2

Die Methode isReachable wurde aus den neuesten Versionen von PhoneGap veraltet. –

19

Das Beste, was zu tun ist, um das „offline“ Ereignis zu hören. Wenn Sie das Offline-Event bekommen können Sie Ihre Benutzer warnen und nehmen, was notwendig Schritte Daten zu speichern, usw.

Zum Beispiel Ihre „deviceready“ Rückruf:

document.addEventListener("offline", function() { 
    alert("No internet connection"); 
}, false); 

Dieser Code sollte für die meisten alle Versionen arbeiten von PhoneGap. Es ist seit mindestens der Version 1.0 gewesen.

+1

+1 Schöne Antwort :) –

+0

Ich habe meine Frage aktualisiert. Bitte guck dir das an. – user1315906

+1

Stellen Sie sicher, dass Sie die INTERNET- und READ_PHONE_STATE-Berechtigungen in Ihrer Datei "manifest.xml" haben. Wenn Sie kürzlich PhoneGap auf 1.6 oder 1.7 aktualisiert haben, stellen Sie sicher, dass Ihre plugins.xml auf "NetworkStatus" und nicht auf "Network Status" verweist. Der Name wurde geändert, um den Speicherplatz zu entfernen. –

3

Genau wie Simon sagte, können Sie

document.addEventListener("offline", youCallbackFn, false); 

oder Sie können die Booleschen Eigenschaft

navigator.onLine 

(Sollte return true oder false)

jedoch diese Technik wird zeigen, verwenden verhören ob das Gerät angeschlossen ist. Der Vorbehalt ist so, dass das Gerät mit WiFi verbunden werden kann, aber der Router ist möglicherweise offline. Verwenden Sie in diesem Fall einen Abrufmechanismus, z. B. Ext.Ajax.request mit kürzeren Timeouts. Timeout abgelaufen = offline

1

Sie können "Ext.device.Connection" in der App.js Ihrer Anwendung hinzufügen.Und überprüfen Sie Ihr Gerät online oder offline ist mit Code:

if (Ext.device.Connection.isOnline()) { 
     alert('Connected to internet'); 
     } 
     else{ 
     alert('You are not connected to internet'); 
     } 
0

Gerade einbetten in Ihrem Tag

<body onoffline="alert('PLEASE CHECK YOUR INTERNET SETTING');">