检查设备(智能手机)是在线还是离线的最简单方法是什么。 我正在使用phonegap,jquery mobile。 我找到了这个。
document.addEventListener("online", yourCallbackFunction, false);
我想要做的是检查互联网连接,并决定从互联网或设备本地数据库获取数据。
if(deviceoffline)
getDataFromLokalDatabase();
else
getDataFromInternet();
答案 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更可靠。