【问题标题】:How to check device is Online or Offline Phonegap如何检查设备是在线还是离线 Phonegap
【发布时间】:2013-07-24 12:05:29
【问题描述】:

检查设备(智能手机)是否在线或离线的最简单方法是什么。 我正在使用phonegap,jquery mobile。 我找到了这个。

document.addEventListener("online", yourCallbackFunction, false);

我要做的是检查互联网连接并决定从互联网或设备本地数据库中获取数据。

if(deviceoffline)
  getDataFromLokalDatabase();
else
  getDataFromInternet();

【问题讨论】:

    标签: javascript jquery cordova offline


    【解决方案1】:

    这是使用原生 phonegap 代码的代码:

    function checkInternet() {
    
        var networkState = navigator.connection.type;
    
        if(networkState == Connection.NONE) {
    
            onConnexionError();
            return false;
    
        } else {
    
           return true;
        }
    }
    

    【讨论】:

    • 你也应该检查Connection.UNKNOWN
    【解决方案2】:

    你可以使用navigator.onLine:

    var isOffline = 'onLine' in navigator && !navigator.onLine;
    
    if ( isOffline ) {
        //local db
    }
    else {
        // internet data
    }
    

    但请注意,如果不支持 navigator.onLineisOffline 将始终为 false

    【讨论】:

    • 好的,我在 chrome 浏览器上正常测试,结果只有 false。但是我用 phonegap 构建了这个应用程序并在我的智能手机上测试它并且它可以工作。谢谢空。你帮了我很多:)
    • navigator.onLine 工作不可靠,至少在我的 PhoneGapp 应用程序(Nexus 4 和 Android 5)中不可靠; navigator.onLine 是一个受支持的属性。我还发现了这个相关问题:stackoverflow.com/questions/14283124/….
    【解决方案3】:

    使用 Jquery 进行 ajax 调用并检查错误代码,如果错误代码为 0,则设备处于脱机状态

    $.ajax({
        //your ajax options
        error: function (request) { 
             if (request.status == 0) {
                alert("you're offline");
            }
        }
    });
    

    【讨论】:

    • 状态 0 表示服务器没有响应请求。这可能是因为设备处于离线状态,但并不一定意味着它离线。
    • 然而 - 在大多数情况下,您关心的是您的应用程序是否可以与您的服务器通信......所以这是相关的!
    【解决方案4】:

    请注意,虽然 navigator.onLine 是最简单的解决方案,但它在所有浏览器上的行为并不一致。在 Chrome 上,如果您有 LAN 电缆,它会告诉您它在线,即使您没有互联网。

    你可以使用cordova插件network-information

    您也可以尝试向您的服务器发出 AJAX 请求;通常您想知道您是否处于离线状态,因为在这种情况下您无法与服务器通信,因此“离线”通常意味着“无法与服务器通信”(这也可能是由于您的服务器离线)。如果您需要检查带宽或链接质量,使用超时或多个请求也很有用。

    离线并不意味着每个用例都一样,您首先需要知道以上哪种技术最适合您,然后实施其中的一种或几种。

    我要做的是检查互联网连接并决定从互联网或设备本地数据库中获取数据。

    似乎通过请求检查与服务器的链接是您的最佳选择。

    【讨论】:

      【解决方案5】:

      本机 onLine 有点不稳定,尤其是在 web 应用程序环境中。但可以用于 pageLoad 的初始检查,但是它有点没用,就好像你有互联网连接一样。

      尝试 ajax 更可靠。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        相关资源
        最近更新 更多