Проверка активности интернета с помощью jquery

У меня есть следующий слушатель для проверки, если у пользователя есть активное подключение к Интернету:

$(function() {  
$( window ).bind(
        "online offline",
        function( event ){
          console.log("-------------------window bind------------------------------");
            if(hasInternets()){
                console.log("window bind online---------------------------------------------");
                sendAllPendingData();
            }else {
                console.log("window bind offline--------------------------------------------");
            }
        }
        );


});

function hasInternets() {
    console.log("hasInternets: " + window.location.href.split("?")[0] + "?" + Math.random());
    var s = $.ajax({ 
        type: "HEAD",
        url: window.location.href.split("?")[0] + "?" + Math.random(),
        async: false
    }).status;
        console.log("s: " +s);
    //thx http://www.louisremi.com/2011/04/22/navigator-online-alternative-serverreachable/ 
    return s >= 200 && s < 300 || s === 304;
}

Он отлично работает на моем ноутбуке. Я не уверен, что он отлично работает на других машинах и устройствах. Я не разбираюсь в этом. Так что буду очень признателен, если кто-нибудь может посоветовать. И, кстати, пока я проводил свои исследования, я наткнулся на этот TrueOnline на плагине jquery, кто-нибудь пробовал это? http://archive.plugins.jquery.com/project/trueonline

Благодарю.

1 ответ

online & offline события являются частью HTML5 и поэтому не будут работать в старых браузерах.

Для поддержки этих браузеров вы должны запустить hasInternets() периодически (например, через setInterval), и ответьте соответственно, был ли ответ успешным.

Вы также можете быть в курсе window.navigator.onLine, но обратите внимание на невероятное количество вариаций / ошибок браузера; так что это свойство, которое я бы старался избегать.

Другие вопросы по тегам