2012-05-07 65 views
6

我需要提醒用戶以下條件:如何在沒有互聯網連接時提醒用戶

  1. 請求超時
  2. 沒有互聯網連接
  3. 無法到達服務器

下面的代碼;如何在發生時捕獲以下條件並提醒用戶?

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

我嘗試下面的代碼來檢查,如果互聯網是可達的,但它沒有工作

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

更新**

我說在我的指標以下。 HTML,但是,當我禁用WIFI,我沒有看到警報彈出。

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

什麼錯誤/警告扔在控制檯日誌? –

+0

什麼都沒有被拋出。 – user1315906

回答

1

您可以使用PhoneGap's NETWORK API

的網絡對象可以訪問該設備的蜂窩和WiFi連接信息。

您可以通過以下方式進行測試,

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

我應該在哪裏添加上面的函數('onDeviceReady','reachableCallback')。它在'app.js'中嗎? – user1315906

+0

你可以直接包含'navigator.network.isReachable(「phonegap.com」,reachableCallback,{});'無論你想測試你的網絡連接還是添加回調函數。 –

+2

isReachable方法已被淘汰出最新版本的PhoneGap。 –

19

做的最好的事情是聽「offline」事件。當你離線時,你可以警告用戶,並採取一切必要步驟來保存數據,等等

例如,你的「deviceready」回調:

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

此代碼應爲大多數所有版本的PhoneGap。自從至少1.0版本發佈以來,

+1

+1尼斯回答:) –

+0

我已更新我的問題。請看一看。 – user1315906

+1

確保您在manifest.xml中擁有INTERNET和READ_PHONE_STATE權限。另外,如果您最近將PhoneGap升級到1.6或1.7,請確保您的plugins.xml引用「NetworkStatus」而非「網絡狀態」,則名稱已更改爲刪除空間。 –

3

正是西蒙說,你可以使用

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

,或者你可以詢問布爾屬性

navigator.onLine 

(如果返回true或false)

但是,這種技術會告訴你是否連接設備。警告是這樣的設備可以連接到WiFi,但路由器可能離線。在這種情況下,請使用輪詢機制,如及時使用Ext.Ajax.request,並使用較低的超時值。超時過期=離線。

1

您可以在應用程序的app.js中添加'Ext.device.Connection'。並檢查您的設備是在線還是離線使用代碼:

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

只是這嵌入在你的標籤

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