如何在没有互联网连接时提醒用户

use*_*906 6 extjs sencha-touch sencha-touch-2 cordova

我需要用以下条件提醒用户;

  1. 请求超时
  2. 没有网络连接
  3. 无法访问服务器

这是代码; 如何在发生时捕获以下条件并提醒用户?

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

我尝试了以下代码来检查互联网是否可以访问,但它不起作用

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

更新**

我在index.html中添加了以下内容,但是,当我禁用WIFI时,我看不到弹出警报.

<script>
function onDeviceReady() {
    document.addEventListener("offline", function() {
        alert("No internet connection");
    }, false);
}
</script>
Run Code Online (Sandbox Code Playgroud)

Sim*_*ald 19

最好的办法是听" 离线 "事件.当您获得离线事件时,您可以警告您的用户并采取任何必要的步骤来保存数据等.

例如,您的"deviceready"回调:

document.addEventListener("offline", function() {
    alert("No internet connection");
}, false);
Run Code Online (Sandbox Code Playgroud)

此代码适用于大多数PhoneGap版本.它至少已经发布了1.0版本.


sgo*_*les 1

您可以使用PhoneGap的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]);
  }
Run Code Online (Sandbox Code Playgroud)

  • isReachable 方法已从最新版本的 PhoneGap 中弃用。 (2认同)