在我的 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");
}
那么有没有办法在连接丢失或被停用或其他情况时立即检查?
最佳答案
如果问题是在页面加载时直接检查在线状态,请使用网络信息插件并在页面加载完成后直接调用函数:
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];
}
离线
和在线
事件在应用程序使用时专门起作用。一旦 deviceready
事件被触发,网络信息插件就可以返回连接状态。
关于cordova - PhoneGap 离线事件触发太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081278/