EventListener“在线”“离线”在Android Cordova WebView中不起作用

时间:2015-11-27 19:30:44

标签: android cordova webview addeventlistener

我对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

中工作

1 个答案:

答案 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应用程序的唯一解决方案。