Javascript 如何检查设备是否在线或离线Phonegap
检查设备(智能手机)在线或离线的最简单方法是什么。 我和phonegap,jquery mobile合作。 我找到了这个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();
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;
}
}