我的网页上有以下代码,用于检查互联网连接。
当Internet可用时,应在10秒后重新加载页面。否则,它会无限期地等待连接。
function checkJSNetConnection(){
var xhr = new XMLHttpRequest();
var file = "https://dl.dropboxusercontent.com/s/9d7ri25ku7xlj9u/WALL-E%20%281%29.jpg?dl=0";
var r = Math.round(Math.random() * 10000);
xhr.open('HEAD', file + "?subins=" + r, false);
try {
xhr.send();
if (xhr.status >= 200 && xhr.status < 304) {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
function timedRefresh(timeoutPeriod) {
if(checkJSNetConnection()==false){
alert("Internet Connection does not Exist");
} else {
setTimeout("location.reload(true);",timeoutPeriod);
}
}
该函数从:
调用<body onload="JavaScript:timedRefresh(10000);">
问题在于,虽然它在互联网可用时成功重新加载页面,但它没有显示没有连接的警报消息,而是显示&#34;无法加载页面&#34;。
答案 0 :(得分:6)
考虑一下,如果有互联网连接,它会将页面设置为在10秒后重新加载吗?
所以,我们假设它通过了互联网连接测试,并开始倒计时10秒。现在突然连接丢失,倒计时达到零并刷新页面(尝试从网站上获取它的新副本)但由于没有互联网连接,它只是失败并说该页面不可用。
可能的解决方案:(还有更多,这是一个)
不设置超时,如果互联网可用,立即重新加载并在连接检查上开始新的超时:
将“定时刷新”更改为“定时检查”逻辑:
<body onload="JavaScript:setTimeout(timedCheck,10000);">
和脚本:
function timedCheck(timeoutPeriod) {
if(checkJSNetConnection()==false){
alert("Internet Connection doesnot Exist");
}else{
location.reload(true);
}
}
这样,当页面首次加载时,它将开始倒计时10秒,最后将进行测试。如果有可用的连接,它将立即重新加载并开始新的倒计时。如果没有连接,它将显示警报。