如何检查设备是在线还是离线Phonegap

时间:2013-07-24 12:05:30

标签: javascript jquery cordova offline

检查设备(智能手机)是在线还是离线的最简单方法是什么。 我正在使用phonegap,jquery mobile。 我找到了这个。

document.addEventListener("online", yourCallbackFunction, false);

我想要做的是检查互联网连接,并决定从互联网或设备本地数据库获取数据。

if(deviceoffline)
  getDataFromLokalDatabase();
else
  getDataFromInternet();

5 个答案:

答案 0 :(得分:11)

这是使用本机手机密码的代码:

function checkInternet() {

    var networkState = navigator.connection.type;

    if(networkState == Connection.NONE) {

        onConnexionError();
        return false;

    } else {

       return true;
    }
}

答案 1 :(得分:9)

您可以使用navigator.onLine

var isOffline = 'onLine' in navigator && !navigator.onLine;

if ( isOffline ) {
    //local db
}
else {
    // internet data
}

但请注意,如果不支持navigator.onLine isOffline将始终为假

答案 2 :(得分:2)

使用Jquery进行ajax调用并检查错误代码,如果错误代码为0则设备处于脱机状态

$.ajax({
    //your ajax options
    error: function (request) { 
         if (request.status == 0) {
            alert("you're offline");
        }
    }
});

答案 3 :(得分:1)

请注意,虽然navigator.onLine是最简单的解决方案,但在所有浏览器上的表现并不一致。在Chrome上,如果您有LAN电缆,它会告诉您它在线,即使您没有互联网。

您可以使用cordova插件network-information

您也可以尝试向服务器发出AJAX请求;通常你想知道你是否离线,因为在那种情况下你无法与服务器通信,所以"离线"通常意味着"无法与服务器通信" (这也可能是由于服务器脱机造成的)。如果您需要检查带宽或链接质量,则使用超时或多个请求也很有用。

离线并不意味着每个用例都相同,您首先需要知道上述哪种技术最适合您,然后实现其中的一个或几个。

  

我想要做的是检查互联网连接,并决定从互联网或设备本地数据库获取数据。

通过请求检查与服务器的链接似乎是您的最佳选择。

答案 4 :(得分:0)

本机onLine有些不稳定,特别是在网络应用程序环境中..但可以用于对pageLoad进行初始检查,但是它有点无用,就好像你到达那一点,你有一个互联网连接。

尝试ajax更可靠。