Окно оповещения, когда нет подключения к Интернету - Phonegap

Я пытаюсь получить всплывающее окно, ну, в общем, всплывающее окно, когда на устройстве нет подключения к Интернету.

я получилследующий пример работает, но теперь я хочу, чтобы предупреждение показывалось только в том случае, если результатом является "Нет сетевого подключения".

Я попробовал это:

<code>if (states[Connection.NONE]){
       alert('Geen internet :(');
       };
</code>

Но это просто заставляет всплывающее окно предупреждения, независимо от того, есть связь или нет. Кто может мне помочь? :)

Ответы на вопрос(8)

Добавить еще, чтобы ничего не делать ...

if (navigator.network.connection.type == Connection.NONE) {
    alert('Geen internet :(');
}
else {
    // nothing
};

Я просто объединил пару ответов здесь, но я хотел что-то, что отвечало бы на события онлайн / офлайн, но также знал с самого начала, было ли подключение к Интернету. Я использовал это в контроллере Angular, который транслировал сообщения об изменениях состояния, но для простоты я удалил эти части.

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

function onDeviceReady() {
    var _curStatus = false;

    function toggleStatus(newVal) {
        console.log('Setting internet connection state to: ' + newVal);
        _curStatus = newVal;
        // My angular $broadcast went here
    }

    var conType = navigator.network.connection.type;
    toggleStatus((conType != Connection.NONE) && (conType != Connection.UNKNOWN));
    document.addEventListener("online", function() {toggleStatus(true);}, false);
    document.addEventListener("offline", function() {toggleStatus(false);}, false);
    }
}
Решение Вопроса

Старый вопрос, но вот как я это сделаю - вы можете использовать события, чтобы определить, подключено ли устройство к сети или нет. Это идеально подходит для этой ситуации, так как всплывающее окно появится, как только устройство переходит в автономный режим:

document.addEventListener("offline", function(){ alert("You're offline") }, false);

И сделать то же самое, но когда устройство восстанавливает подключение к интернету?

document.addEventListener("online", function(){ alert("You're online") }, false);

Проверьте документы событий здесь:http://docs.phonegap.com/en/1.8.1/cordova_events_events.md.html#offline

UPDATE :

по состоянию на Кордову 5 эти события были перенесены вCordova-плагин-сети информация

 16 февр. 2016 г., 20:49
Кто-нибудь сталкивается с проблемой, с которой я сталкиваюсь -stackoverflow.com/questions/35425746/…
 Rvervuurt05 февр. 2015 г., 12:16
Пришел по этому вопросу по стечению обстоятельств и заметил, что я никогда не отмечал ответ как правильный. Это кажется самым простым и лучшим ответом, спасибо!
 15 мая 2015 г., 00:27
Это здорово, но мне бы хотелось узнать состояние, когда приложение изначально запускается - есть ли способ получить это таким же образом?
 10 авг. 2017 г., 19:35
Я считаю, что эти методы очень противоречивы при использовании Cordova. Иногда он говорит, что связи нет, хотя она существует.
Try the below code.  

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';

if ((states[networkState]) == states[Connection.NONE])
{
alert("Please check your internet connectivity and try again"); 
}
<script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // device APIs are available
    //
    function onDeviceReady() {
        checkConnection();
    }

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

            if(navigator.connection.type == Connection.NONE) {        
        alert("No network connection.Please turn it on");
    }
        }

    </script>

если вы делаете

if (states[Connection.NONE]){
   alert('Geen internet :(');
   };

это произойдет.
сделай это.

networkState = navigator.network.connection.type
alert(states[networkState]);

посмотрим, работает ли это для вас или нет.

EDIT:  просто сравните:

if (networkState == Connection.NONE){
  alert('no internet ');
};
 Rvervuurt04 апр. 2012 г., 16:12
Это именно то, что делает пример: возвращает тип соединения в окне оповещения. То, что я хочу, это то, что всплывающее окно отображается ТОЛЬКО, когда соединениеstates[Connection.NONE]
 11 февр. 2013 г., 06:32
куда добавить этот код? я имею в виду, могу ли я назвать это в$(document).ready(function() {...} функционировать?

Это потому, что вы проверяете истинность константы. Этот тип теста всегда вернет истину. То, что вы хотите использовать, это:

if (navigator.network.connection.type == Connection.NONE]{
  alert('Geen internet :(');
};

Решение :

<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
// 
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
//
function onDeviceReady() {
    checkConnection();
}

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';

    alert('Connection type: ' + states[networkState]);
}

</script>

Ваш ответ на вопрос