【问题标题】:EventListener "online" "offline" doesn't work in Android Cordova WebViewEventListener "online" "offline" 在 Android Cordova WebView 中不起作用
【发布时间】:2015-11-27 19:30:43
【问题描述】:

我对 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');});

但在 android webview 中没有任何工作

【问题讨论】:

  • 你找到什么了吗?
  • 你有一些日志要从设备分享吗?

标签: android cordova webview addeventlistener


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多