2012-04-28 42 views
0

我想检查与JavaScript的连接,但我已经尝试了很多的教程,但任何为我工作。检查连接javascript

比如我有这个代码,但不工作

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Online status</title> 
    <script>  
    function updateIndicator() 
    { 
    document.getElementById('indicator').textContent = navigator.onLine ? 'online' : 'offline';  
    } 
    </script> 
</head> 
<body onload="updateIndicator()" ononline="updateIndicator()"  onoffline="updateIndicator()"> <p>The network is: <span 
    id="indicator">(state unknown)</span> 
</body> 
</html> 

一些帮助?谢谢。

+1

你可能要参考[文章](https://developer.mozilla.org/en/DOM/window.navigator.onLine) – Joseph 2012-04-28 09:38:27

+0

我不是JavaScript开发,但它依然清晰对我来说,如果你包括到底发生了什么问题,它会帮助专家回答你的问题。它究竟如何“不起作用”?你有错误信息吗? – Verbeia 2012-04-28 09:41:09

+0

它为我工作。至少它说我在线。 http://jsfiddle.net/6Gj4v/ – 2012-04-28 09:46:38

回答

2

编辑:似乎这是一个设置问题,将离开这个无论如何,因为它可能是有用的情况下ononline和onoffline不支持。

我不确定ononline和onoffline是否会得到很好的支持,但您可以设置一个间隔来检查状态并相应地更新它。这个小小提琴作品(只停留您的网络连接和状态将切换到离线)

http://jsfiddle.net/vpG5b/1/

您可以调整时间间隔为必要的,但500毫秒应该是足够好,而不是过于苛刻,我加检查只更新状态(更少的DOM操作),这样你甚至可以拥有离线/在线处理程序。

var handler = { 
    online: function() { 
     alert('online'); 
    }, 
    offline: function() { 
     alert('offline'); 
    } 
}; 

function isOnline() { 

    var status = navigator.onLine ? 'online' : 'offline', 
     indicator = document.getElementById('indicator'), 
     current = indicator.textContent; 

    // only update if it has change 
    if (current != status) { 

     // update DOM 
     indicator.textContent = status; 

     // trigger handler 
     handler[status](); 
    }; 
}; 

setInterval(isOnline, 500); 
isOnline();​