这里的“onLine”是指连接到“网络”而不是“互联网”。
测试使用
第 5 代 Amazon Fire - Android 5.1.1 棒棒糖,
Nook HD - Android 4.0.3 冰淇淋三明治和
三星 Galaxy S3 Neo - Android 4.4.2 KitKat
发现标准浏览器事件和属性不可靠,但这似乎工作可靠;
cordova network information plugin
例如。在 deviceReady 之后,您可以调用它;
function isOnLine(){
return navigator.connection.type !== Connection.NONE ;
}
或注册这些;
window.addEventListener("online",someFunction);
window.addEventListener("offline",someFunction);
除了(正确的)在线/离线事件在启动时触发之外,一切都按预期工作。
相比之下,我发现使用标准浏览器事件和属性...
主要使用第 5 代 Amazon Fire - Android 5.1.1 棒棒糖;
navigator.onLine 以 false 开头,可能不正确(并且是只读的)。
如果在启动时设备已连接并且..
设备随后断开连接 - navigator.onLine = false....
随后连接的设备 - navigator.onLine = true。
如果设备在启动时断开连接并且...
随后连接的设备 - navigator.onLine = true....
设备随后断开连接 - navigator.onLine = false。
此后navigator.onLine 反映了设备连接状态的变化......有时。
因此,它以 false 开始(可能不正确),然后在设备状态下一次更改时设置(不可靠)。
window.addEventListener("online",online.bind(this));
和
window.addEventListener("offline",offline.bind(this));
从未被解雇(也见于 Nook)。
window.ononline = function(){console.log("online");}
和
window.onoffline = function(){console.log("offline");}
两者都被触发但不可靠,并且取决于设备中 wifi 的切换位置...因此该插件似乎是目前 Cordova 应用程序的唯一解决方案。