Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查设备是否在线或离线Phonegap_Javascript_Jquery_Cordova_Offline - Fatal编程技术网

Javascript 如何检查设备是否在线或离线Phonegap

Javascript 如何检查设备是否在线或离线Phonegap,javascript,jquery,cordova,offline,Javascript,Jquery,Cordova,Offline,检查设备(智能手机)在线或离线的最简单方法是什么。 我和phonegap,jquery mobile合作。 我找到了这个 document.addEventListener("online", yourCallbackFunction, false); 我想做的是检查Internet连接,并决定从Internet或设备本地数据库获取数据 if(deviceoffline) getDataFromLokalDatabase(); else getDataFromInternet();

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

document.addEventListener("online", yourCallbackFunction, false);
我想做的是检查Internet连接,并决定从Internet或设备本地数据库获取数据

if(deviceoffline)
  getDataFromLokalDatabase();
else
  getDataFromInternet();
您可以使用:


但是请注意,如果不支持
navigator.onLine
Isofline
将始终为false

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

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

本地在线有些不稳定,尤其是在web应用程序环境中。。但可以用于页面加载时的初始检查,不过这有点没用,就好像你已经连接到互联网一样


尝试使用ajax更可靠。

这是使用本机phonegap代码的代码:

function checkInternet() {

    var networkState = navigator.connection.type;

    if(networkState == Connection.NONE) {

        onConnexionError();
        return false;

    } else {

       return true;
    }
}

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

您可以使用cordova插件

您还可以尝试向服务器发出AJAX请求;通常,您想知道自己是否处于脱机状态,因为在这种情况下,您无法与服务器通信,因此“脱机”通常意味着“无法与服务器通信”(这也可能是由于服务器处于脱机状态所致)。如果您需要检查带宽或链路质量,则处理超时或多个请求也很有用

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

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


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

好的,我在chrome浏览器上正常测试,结果为false。但我用phonegap构建了这个应用程序,并在我的智能手机上进行了测试,结果它运行正常。谢谢。你帮了我很多忙:)navigator.onLine不可靠,至少在我的PhoneGapp应用程序(Nexus4和Android 5)中不可靠;不过navigator.onLine是受支持的属性。我还发现了此相关问题:。状态0表示服务器未响应请求。这可能是因为设备处于脱机状态,但并不一定意味着它处于脱机状态。然而,在大多数情况下,您关心的是您的应用程序是否可以与服务器通信。。。所以这是相关的!您应该检查
连接。未知
function checkInternet() {

    var networkState = navigator.connection.type;

    if(networkState == Connection.NONE) {

        onConnexionError();
        return false;

    } else {

       return true;
    }
}