android 导航器.onLine不工作cordova 5.0.0

2exbekwf  于 2022-12-21  发布在  Android
关注(0)|答案(3)|浏览(106)

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

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

问题是:它总是正确的。我该如何修复它?我知道这个plugin,但我甚至不知道我是如何让它工作的。我知道如何添加插件,但它就结束了。有人能帮助我让这个插件工作,或替代代码来检查用户是否离线吗?提前感谢

mklgxw1f

mklgxw1f1#

Cordova插件在您的web应用和移动的操作系统的原生apis之间建立了一座桥梁。要使用原生端,您必须等到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
   }
}

您还可以直接侦听onlineoffline事件,如下所示:

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了解更多细节。

brtdzjyr

brtdzjyr2#

将此添加到您的index.html:

document.addEventListener("offline", function(){ navigator.notification.alert("No connection found") }, false);

如果没有网络连接,它会提醒您。
如果您没有通知插件:

document.addEventListener("offline", function(){ alert("No connection found") }, false);
3zwjbxry

3zwjbxry3#

添加“cordova插件添加cordova-plugin-network-information”到你的项目然后使用

if(windows.navigation.onLine){ 
    alert('online!');
 }

还要检查是否已将其添加到config.xml中

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

相关问题