如何在没有互联网连接的情况下提醒用户

时间:2012-05-07 12:17:41

标签: extjs cordova sencha-touch sencha-touch-2

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

  1. 请求超时
  2. 没有互联网连接
  3. 无法访问服务器
  4. 这是代码;如何在发生时捕获以下条件并提醒用户?

    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 ');
        };
    

    更新**

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

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

5 个答案:

答案 0 :(得分:19)

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

例如,您的“deviceready”回调:

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

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

答案 1 :(得分:3)

正如西蒙所说,你可以使用

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

或者您可以询问布尔属性

navigator.onLine

(应该返回true或false)

但是,此技术将告诉您设备是否已连接。需要注意的是,设备可以连接到WiFi,但路由器可能处于脱机状态。在这种情况下,请使用轮询机制,例如具有较低超时的及时Ext.Ajax.request。超时已过期=离线。

答案 2 :(得分: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]);
  }

答案 3 :(得分:1)

您可以在应用程序的app.js中添加“Ext.device.Connection”。使用以下代码检查您的设备是在线还是离线:

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

答案 4 :(得分:0)

将其嵌入您的标记

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