Jquery mobile 使用phonegap检查internet连接

Jquery mobile 使用phonegap检查internet连接,jquery-mobile,cordova,Jquery Mobile,Cordova,我看到了一些不同的选项来检查与phonegap的互联网连接。有document.addEventListener(“在线”,onOnline,false)还有导航器.网络.连接.类型。。。但我不确定哪一个是最佳实践。我还希望能够防止手机连接到wifi网络但没有互联网连接的坏情况 $(document).on('pagecreate','#explanation-short', function(){ if ( isPhoneGap() ) { if (checkConnecti

我看到了一些不同的选项来检查与phonegap的互联网连接。有
document.addEventListener(“在线”,onOnline,false)还有
导航器.网络.连接.类型
。。。但我不确定哪一个是最佳实践。我还希望能够防止手机连接到wifi网络但没有互联网连接的坏情况

$(document).on('pagecreate','#explanation-short', function(){
     if ( isPhoneGap() ) {
    if (checkConnection() == "none" ) {
        connectionStatus = 'offline'; 
    } else {
        connectionStatus = 'online';
    }
    function checkConnection() {
        var networkState = navigator.network.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.NONE]     = 'No network connection';
        //console.log('Connection : ' + Connection);
        //console.log('Connection type: ' + states[networkState]);
        return networkState;
    }
} else {
    connectionStatus = navigator.onLine ? 'online' : 'offline';
}
    console.log("connectionStatus : "+connectionStatus);
});
例如,如果手机连接到wifi,则此代码有效,但我们不确定互联网是否实际可用


phonegap 3.3+和Jquery mobile 1.4的最佳实践是什么?

在设备就绪功能中,我使用以下几行检查互联网连接

if(navigator.connection.type==0)
{
    alert('This application requires internet. Please connect to the internet.');

}
else if(navigator.connection.type=='none')
{
    alert('This application requires internet. Please connect to the internet.');

}
else
{
    //Hurray I'm online
}
目前这对我很有帮助。但是我仍然没有那种方法来检测连接的wifi,但是没有互联网。我也想知道如何检测。

事件

document.addEventListener("online", onOnline, false);
仅当您的应用程序已加载并重新连接时才会触发。这不会在应用程序启动时触发


因此,您必须在应用程序启动时使用
checkConnection()
方法,然后如果您需要在应用程序运行时稍后进行检查,则使用事件侦听器。

在Phonegap中有两个事件侦听器“在线”和“离线”。用于快速响应。请检查示例:




有关更多详细信息,请访问

您真正想要了解的实现可达性类,并在网络和在线/离线处理之外使用该类。顺便说一句,不确定您的示例中是否调用了checkConnection函数。@gro我编辑了这个问题,谢谢。为什么我不能随时随地使用checkConnection()?您可以。当事件发生时,使用事件侦听器将正确地捕获它,如果您选择调用另一个方法,那么它将仅在您请求时捕获它。我的观点是,你不能在加载时使用事件侦听器。它不工作,尝试断开Wifi,但仍然在线显示。
var internet;
document.addEventListener('online',online,false);
document.addEventListener('offline',offline,false);


function online(){

  internet=true;
}

function offline(){
 internet=false;
}

if(internet){

// internet is connected

}else{

// internet is not connected
}