2011-08-11 13 views
4

ナビゲータがあなたの状態をオンライン/オフラインに変更したかどうかを検出するにはどうすればよいですか?navigator.onlineの変更を検出する

何かのように:

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

を見つけることができます。あなたのコンピュータはどんなネットワークにも接続されているだけです。 https://github.com/PixelsCommander/OnlineJSを代わりに使用してください。これに対応するコールバックがあり、window.onLineHandler関数とwindow.offLineHandler関数を呼び出すためにonline.jsを含めるだけです。 – PixelCommander

答えて

4

このような何か(すべてのブラウザがこれらのイベント、現在はIE 8,9および> 3サポートFFこれらのイベントをサポートしていません):

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

体と、このコード上のクラスの助けを借りて、あなたがnavigator.onLineは、インターネットの可用性を示していない事実

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

window.onoffline = function() { 
    alert('You are now offline'); 
} 
関連する問題