0

[重要的是要注意:我事先做了研究,看到有人问过类似的问题,但没有什么适合我的需要。]

我使用以下 JavaScript/Ajax 代码tracker每 120 秒刷新一次 iframe ()。如果由于某种原因刷新失败(例如没有互联网连接),它会将页面重定向到Tracker2.html.

<script type=text/javascript>
setInterval(function(){
var rq = new XMLHttpRequest();
rq.open('GET', document.getElementById('tracker').src, true);
rq.onreadystatechange = function() {
    if(rq.readyState === 4) {
        if(rq.status === 200) {
        } else {
    window.location.href = "Tracker2.html";
        }
    }
}; 
rq.send(null);
    document.getElementById("tracker").src+="";
},120000);
</script>

我的问题是,使用XMLHttpRequest,大约需要 45-60 秒才能“确认”没有互联网连接(= 刷新 iframe 失败),然后它才会重定向到Tracker2.html.

理想情况下,我想只等待 5 秒,如果 5 秒后,跟踪器的 iframe 没有响应,则重定向。

基本上,我不需要它等待 45-60 秒来意识到没有互联网连接 - 这是一个内部网络,只需要半秒来确认是否有网络连接。

任何帮助将不胜感激。

4

1 回答 1

0

您可以在我编辑了您的代码的 setInterval 中添加一个 setTimeout。

setInterval(function(){
var rq = new XMLHttpRequest();
rq.open('GET', document.getElementById('tracker').src, true);
rq.onreadystatechange = function() {
    if(rq.readyState === 4) {
        if(rq.status === 200) {
            clearTimeout(cancel);
        } else {
            window.location.href = "Tracker2.html";
        }
    }
}; 
rq.send(null);
var cancel = setTimeout(function(){
    window.location.href = "Tracker2.html";
}, 5000);

    document.getElementById("tracker").src+="";
},120000);
于 2012-12-24T15:15:09.613 回答