仅在互联网可用时才重新加载网页

时间:2014-12-09 18:02:18

标签: javascript html

我的网页上有以下代码,用于检查互联网连接。

当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;。

1 个答案:

答案 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秒,最后将进行测试。如果有可用的连接,它将立即重新加载并开始新的倒计时。如果没有连接,它将显示警报。