EventListener "online" "offline" 在 Android Cordova WebView 中不起作用

EventListener "online" "offline" doesn't work in Android Cordova WebView

我在使用 Android Cordova Webview 时遇到了一点问题。我的应用没有触发 eventListener "online/offline".

我尝试了多种类型的听众:

window.addEventListener('online', function() {alert('ON LISTENER');});
document.addEventListener('online', function() {alert('ON LISTENER');});
$(window).on("online", function() {alert('ON LISTENER');});

但 none 在 android 网络视图中工作

此处 "onLine" 表示连接到 "a network" 而不是 "the internet".

测试使用 第 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);

所有工作都按预期进行,除了(正确的)online/offline 事件可能在启动时触发。


比较我使用标准浏览器事件和属性发现的内容...

主要使用第 5 代 Amazon Fire - Android 5.1.1 lollipop;

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