2011-08-11 4 views
4

네비게이터가 온라인/오프라인 상태를 변경했는지 어떻게 알 수 있습니까?navigator.online에서 변경 감지

뭔가 같은 :

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

찾을 수 있습니다 navigator.onLine 인터넷 가용성을 표시하지 않는 사실. 그것은 귀하의 컴퓨터가 어떤 네트워크에 연결되어 있는지 보여줍니다. 대신 https://github.com/PixelsCommander/OnlineJS를 사용하십시오. 해당 콜백을 가지고 있으며, window.onLineHandler 및 window.offLineHandler 함수를 설정하고 호출하기 위해 online.js를 포함하기 만하면됩니다. – PixelCommander

답변

4

이런 식으로 뭔가 (하지 모든 브라우저는 이러한 이벤트, 현재는 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

보다 많은 크로스 브라우저 호환이 필요하면 navigator.onLine 속성을 폴링해야합니다.

var status = document.getElementById('status') 

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

데모 : 몸에 클래스의 도움이 코드 http://html5demos.com/nav-online

+2

크로스 브라우저에서는 작동하지 않습니다 .... 연결이 끊어지면 크롬 만 navigator.onLine을 올바르게 설정합니다. Safari와 Firefox는 인터넷 연결을 끊으면 플래그를 false로 설정하지 않습니다. – Hitesh

1

당신이

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

window.onoffline = function() { 
    alert('You are now offline'); 
}