Проверка активности интернета с помощью 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
, но обратите внимание на невероятное количество вариаций / ошибок браузера; так что это свойство, которое я бы старался избегать.