обнаружение изменений на navigator.online - PullRequest
5 голосов
/ 12 августа 2011

Как я могу определить, изменил ли навигатор ваше состояние на онлайн / офлайн?

что-то вроде:

var oldState = navigator.onLine; 
window.navigator.onlinechange = function(evnt,newState) { 
         alert('your changed from' + oldState + ' to' + newState + 'state');
}

Ответы [ 3 ]

3 голосов
/ 12 августа 2011

Примерно так (не каждый браузер поддерживает эти события, в настоящее время только IE 8,9 и FF> 3 поддерживают эти события):

var el = document.body;
if (el.addEventListener) {
   el.addEventListener("online", function () {
     alert("online");}, true);
   el.addEventListener("offline", function () {
     alert("offline");}, true);
}
else if (el.attachEvent) {
   el.attachEvent("ononline", function () {
     alert("online");});
   el.attachEvent("onoffline", function () {
     alert("offline");});
}
else {
   el.ononline = function () {
     alert("online");};
   el.onoffline = function () {
     alert("offline");};
}

Поддержка браузера различается, проверьте это: http://help.dottoro.com/ljnasgpu.php

2 голосов
/ 14 апреля 2016

С помощью классов по телу и этому коду вы можете найти

window.ononline = function() {
    alert('You are now online');
}

window.onoffline = function() {
    alert('You are now offline');
}
2 голосов
/ 12 августа 2011

Если он должен быть более совместимым с браузерами, вам нужно опросить свойство navigator.onLine.

var status = document.getElementById('status')

setInterval(function () {
  status.innerHTML = navigator.onLine ? 'online' : 'offline';  
}, 250);

Демо: http://html5demos.com/nav-online

...