您的警报和检查需要在同一个函数中,并且计时器 id (perfectTiming) 是全局的。
var perfectTiming = null;
function check_connection() {
var online = navigator.onLine;
if (online) {
alert("ONLINE!");
clearInterval(perfectTiming);
}
}
function timed_alert() {
perfectTiming = setInterval(check_connection,3000);
}
timed_alert();
如果您正在尝试测试用户是否具有更难的活动互联网连接,因为浏览器没有真正的方法来检查这一点。但是,您可以测试几个不同的 ip/url 以查看它们是否可以访问
var testUrlIndex = 0;
var testurls = [
"http://www.google.com",
"http://www.cnn.com"
];
function testURL(url)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==0)
{
testUrlIndex++;
if( testUrlIndex<testurls.length ) {
testUrl(testurls[testUrlIndex]);
} else {
weAppearToBeOffline();
}
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function weAppearToBeOffline() {
//DO whatever you need to do if we are offline.
}
testUrl(testurls[0]); //start the check
此代码将检查 2 个 url(testurls
如果您想检查更多,只需添加更多 url),如果它通过所有这些并且无法访问它们,它将调用该weAppearToBeOffline
函数
现在这只是在几个方面有问题,一个主要是存在这样一种情况,即用户可能在线但无法访问这些网址中的任何一个,但可以访问其他网址。