如何定期检查Phonegap中的互联网连接?

zev*_*ues 15 javascript jquery-mobile cordova

我正在使用Phonegap.我需要定期检查网络连接.实际上我从服务器获取一些数据.如果没有连接,我需要显示错误提示.

我用Google搜索并找到了解决方案.但它不行.因为我需要定期检查连接.

<html>
  <head>
    <title>navigator.network.connection.type Example</title>
    <script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for PhoneGap to load
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        checkConnection();
    }

    function checkConnection() {
        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';
        alert('Connection type: ' + states[networkState]);
    }
    </script>
  </head>
  <body>
    <p>A dialog box will report the network state.</p>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

它仅在应用程序启动时第一次检查.但我需要定期检查它,因为我正在进行套接字编程.如果互联网出现问题,我需要展示它.但此代码仅在启动时显示.

Gaj*_*res 27

工作示例:http://jsfiddle.net/Gajotres/d5XYR/

使用间隔计时器每隔预定义时间检查Internet连接.此解决方案需要HTML5浏览器,但这不是问题,因为jQuery Mobile已经需要HTML5浏览器.在这种情况下,计时器将每100毫秒检查一次互联网连接,并将最终结果设置为javascript全局变量.

一切都取决于这一行:

window.navigator.onLine -- it will be false if the user is offline.
Run Code Online (Sandbox Code Playgroud)

最终解决方案

var connectionStatus = false;

$(document).on('pagebeforeshow', '#index', function () {
    setInterval(function () {
        connectionStatus = navigator.onLine ? 'online' : 'offline';
    }, 100);
    $(document).on('click', '#check-connection', function () {
        alert(connectionStatus);
    });
});
Run Code Online (Sandbox Code Playgroud)

测试:

  • Windows Firefox

  • Windows谷歌浏览器

  • Windows IE9和IE10

  • Android 4.1.1 Chrome

  • iPad 3 Safari

  • iPad3 Chrome


Mat*_*y J 6

也许您可以使用文档上的"在线"和"离线"事件侦听器,以便在应用程序联机或脱机时通知您的应用程序,如文档中所述.这里:http://docs.phonegap.com/en/3.2.0/cordova_events_events.md.html#online