我希望每隔x秒调用以下函数,因此我不必刷新页面。
var rq = new XMLHttpRequest();
rq.open('GET', "SAME DOMAIN ADDRESS", true);
rq.onreadystatechange = function() {
if(rq.readyState === 4) {
if(rq.status === 200) {
clearTimeout(xmlHttpTimeout);
window.location.href = "Tracker.html"; // if internet connection found, redirect.
} else {
}
}
};
rq.send("");
var xmlHttpTimeout=setTimeout(ajaxTimeout,5000);
function ajaxTimeout(){
rq.abort();
// IF no internet connection found, call this whole javascript function/code AGAIN in 5 seconds! to check for internet connection
}
基本上,我想检查互联网连接而不必刷新整个页面 - 如果有,则重定向到Tracker.html
答案 0 :(得分:1)
最好的方法是使用setTimeout
:
function callMe() {
// Some Code
setTimeout(callMe, 1000);
}
callMe();
您的代码将如下所示:
var rq = new XMLHttpRequest();
rq.onreadystatechange = function() {
if(rq.readyState === 4) {
if(rq.status === 200) {
window.location.href = "Tracker.html"; // if internet connection found, redirect.
} else {
setTimeout(rq.send, 5000);
}
}
};
rq.send();
如果您想检查客户端是否已连接,您还可以使用here所述的新在线和离线事件。
答案 1 :(得分:1)
检查navigator.onLine
是真还是假。
答案 2 :(得分:0)
ajax解决方案只能在同一个域上运行。但是,在同一个域中,您可能不需要测试服务器是否在线。使用navigator.onLine,它将指示互联网是否可访问,但仍然无法访问相应的服务器。
诀窍是尝试加载目标服务器的映像,然后出错,然后在5秒后重试。当图像成功加载后,可以进行重定向。
<html>
<header>
</header>
<body>
<script type="text/javascript">
var img = new Image();
var ping = function() { img.src = "http://www.somedomain.com/valid_image.jpg"; }
ping();
img.onerror = function(e) {
console.log('error');
setTimeout(function() {
ping();
}, 5000);
}
img.onload = function(e) {
console.log('YES');
window.location.href = "http://www.google.com";
}
</script>
</body>
</html>