在我的PhoneGap应用程序中,我首先检查设备是否已连接到互联网,然后再运行代码并调用API等。
if (window.navigator.onLine == false) {
//error handling
} else {
//do stuff & call API
}
这完全有效,但是如果设备丢失它的连接并且在我连接后5秒左右重新加载页面,代码仍然会触发,并且尽管设备不再连接,也会调用API。如果在大约5秒后重新加载页面,则会按预期触发错误处理。
所以看起来连接丢失后大约需要5秒才能更改为"离线"。我在离线事件中对此进行了双重检查,并且仅在这5秒后才解雇。
document.addEventListener("offline", onOffline, false);
function onOffline() {
alert("now offline");
}
那么有没有办法在连接丢失或被拒绝时立即检查?
答案 0 :(得分:3)
如果问题特别是在页面加载时直接检查在线状态,请使用网络信息插件并在页面加载完成后直接调用函数:
function checkConnection() {
var networkState = navigator.network.connection.type;
var states = {};
states[Connection.UNKNOWN] = false;
states[Connection.ETHERNET] = true;
states[Connection.WIFI] = true;
states[Connection.CELL_2G] = true;
states[Connection.CELL_3G] = true;
states[Connection.CELL_4G] = true;
states[Connection.NONE] = false;
return states[networkState];
}
offline
和online
事件在应用程序使用后专门工作。一旦deviceready
事件被触发,网络信息插件就可以返回连接状态。