2012-12-28 15 views
0

我正在使用以下腳本來檢查Internet連接。如果結果是'在線'或結果是'離線',我想要做的事情。JavaScript:使用IF語句和navigator.onLine一起檢查互聯網連接

<body> 
    <p><span id="status">checking...</span></p> 

<script> 
var statusElem = document.getElementById('status') 

setInterval(function() { 
    statusElem.className = navigator.onLine ? 'online' : 'offline'; 
    statusElem.innerHTML = navigator.onLine ? 'online' : 'offline'; 
}, 250); 
</script> 
</body> 

任何想法?基本上我想使用IF語句:IF在線的話,否則..

+0

...你在找'if(navigator.onLine){...} else {...}'? – apsillers

+2

無需定時器。只要'navigator.onLine'屬性發生變化,瀏覽器就會觸發全局'online' /'offline'事件。 –

+0

它更好地使用三元運算符,我使用它們而不是如果其他 – paritosh

回答

1

使用您的間隔碼:

setInterval(function() { 
    if(navigator.onLine) { 
     statusElem.className = 'online'; 
     statusElem.innerHTML = 'online'; 
    } else { 
     statusElem.className = 'offline'; 
     statusElem.innerHTML = 'offline'; 
    } 
}, 250); 

但是,你可以做同樣的事情,更優雅的使用online/offline event listeners

window.addEventListener("offline", function() { 
    statusElem.className = 'offline'; 
    statusElem.innerHTML = 'offline'; 
}, false); 

window.addEventListener("online", function() { 
    statusElem.className = 'online'; 
    statusElem.innerHTML = 'online'; 
}, false); 
+0

這不起作用。奇怪的。看來你不能使用navigator.onLine和IF語句。 – Homie

+0

您沒有看到第一個代碼的工作?它適用於我:http://jsfiddle.net/GwAZb/。 (請注意[MDN文檔](https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine)中陳述的條件:「在Chrome和Safari中,如果瀏覽器是**而不是能夠連接到局域網**(局域網)或路由器,它是離線的;所有其他條件返回true ...在Firefox和Internet Explorer中,**將瀏覽器切換到離線模式**發送一個錯誤值。所有其他條件都會返回真實值。「如果使用IE或Firefox,是否切換到離線模式?) – apsillers