PhoneGap离线事件发生得太慢了

时间:2015-03-16 15:54:19

标签: cordova events offline

在我的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");
}

那么有没有办法在连接丢失或被拒绝时立即检查?

1 个答案:

答案 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];
}

offlineonline事件在应用程序使用后专门工作。一旦deviceready事件被触发,网络信息插件就可以返回连接状态。