javascript - navigator.onLine 不工作 cordova 5.0.0

标签 javascript android html cordova phonegap-plugins

我在检查设备是否没有互联网连接时遇到问题。我正在使用 cordova 5.0.0 CLI。这是我的代码:

if(navigator.onLine) {
  alert("online");
} else {
  alert("offline");
  window.open("404.html");
}

问题是:它总是正确的。我该如何修复它?我知道这个plugin ,但我不知道如何让它发挥作用。我知道如何添加插件,但然后就结束了。有人可以帮助我让这个插件正常工作,或者使用替代代码来检查用户是否离线?提前致谢

最佳答案

Cordova 插件在您的 Web 应用程序和移动操作系统的 native API 之间架起了一座桥梁。为了使用 native 端,您必须等到 cordova 准备好。如果您想检查用户是否在线或离线,您可以添加问题中链接的插件,然后像这样使用它:

首先创建一个函数,该函数将返回 truefalse,具体取决于用户是否在线:

function checkConnection(){
   var networkState = navigator.connection.type;

   var states = {};
   states[Connection.UNKNOWN]  = 'Unknown connection';
   states[Connection.ETHERNET] = 'Ethernet connection';
   states[Connection.WIFI]     = 'WiFi connection';
   states[Connection.CELL_2G]  = 'Cell 2G connection';
   states[Connection.CELL_3G]  = 'Cell 3G connection';
   states[Connection.CELL_4G]  = 'Cell 4G connection';
   states[Connection.CELL]     = 'Cell generic connection';
   states[Connection.NONE]     = 'No network connection';

   if(states[networkState].indexOf("WiFi") != -1 || states[networkState].indexOf("Cell") != -1)
        return true;
  return false;
}

当您获得设备就绪事件时:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
   // Now safe to use device APIs
   var connected = checkConnection();//will return true or false

   if(connected){
      //user is online
   }else{
      //user is offline
   }
}

您还可以直接监听在线离线事件,如下所示:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
// Now safe to use device APIs
  document.addEventListener("online", onOnline, false);
  document.addEventListener("offline", onOffline, false);
}

function onOnline() {
   // User is Online
}
function onOffline() {
   // User is Offline
}

这两种方法都需要添加network-information插件。阅读documentation了解更多详情。

关于javascript - navigator.onLine 不工作 cordova 5.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482845/

相关文章:

javascript - jQuery 自动完成选择事件

javascript - 浏览器:按住 "Alt"键聚焦于输入文本

javascript - React - 异步等待异步问题

android - 单击时 android 组件的掩码

android - 如何以编程方式检测android中可用的底部软导航栏?

javascript - 当我自己引起 Angular $watch 事件时,如何忽略它?

android - Assets 和引用

html - Internet Explorer 上的文本旋转

jquery - 有很多按钮,每个按钮一个div,当按下一个按钮时,将显示对应的div

python - 过滤掉 HTML 标签并解析 python 中的实体