我对Android Cordova Webview有一点问题。我的应用程序不会触发eventListener“在线/离线”。
我尝试了很多类型的听众:
window.addEventListener('online', function() {alert('ON LISTENER');});
document.addEventListener('online', function() {alert('ON LISTENER');});
$(window).on("online", function() {alert('ON LISTENER');});
但没有在android webview
中工作答案 0 :(得分:0)
此处“onLine”表示连接到“网络”而不是“互联网”。
使用测试 第五代亚马逊之火 - 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应用程序的唯一解决方案。