如果已连接,如何使用javascript刷新页面?
我有一个网页,我希望它每2分钟刷新一次,使用以下代码:如果已连接,如何使用javascript刷新页面?,javascript,jquery,page-refresh,Javascript,Jquery,Page Refresh,我有一个网页,我希望它每2分钟刷新一次,使用以下代码: location.reload(); 问题是,我假设用户已连接;但是,如果s/he没有联机连接,该页面将失败并提供默认浏览器(无连接错误页面);除非用户手动刷新,否则页面将永远不会刷新 我是否可以使用ping机制来决定是否刷新?您可以使用navigator.onLine来检测网络连接 setInterval(function() { if (navigator.onLine) { location.reload()
location.reload();
问题是,我假设用户已连接;但是,如果s/he没有联机连接,该页面将失败并提供默认浏览器(无连接错误页面);除非用户手动刷新,否则页面将永远不会刷新
我是否可以使用ping机制来决定是否刷新?您可以使用
navigator.onLine
来检测网络连接
setInterval(function() {
if (navigator.onLine) {
location.reload();
}
}, 120000); /* 120000 ~> 2 minutes */
否则,您可以对同一域资源使用HEAD
ajax请求,并且仅当响应返回200/304
状态时才刷新页面,例如
setInterval(function() {
$.ajax({
url : "/favicon.ico", /* or other resource */
type : "HEAD"
})
.done(function() {
location.reload();
});
}, 120000); /* 120000 ~> 2 minutes */
试试这个
var clrInterval=null;
clrInterval = setInterval(function(){
$.ajax({
url:'',data:'',
success:function(data);{
if(data=='no-success') {
// your code if no-success
} else {
clearInterval(clrInterval);// clear interval if you get success
}
}
});
},5000);
一种可能是向您的服务器或非常可靠的服务器发送查询,并检查您是否收到答复
navigator.onLine
的问题是,它会告诉浏览器状态,但浏览器可能在没有网络的情况下处于联机状态
请参阅:您可以使用布尔值:
if (navigator.onLine) {
//Actions
}
通过AJAX获取页面内容,成功时替换DOM,失败时不替换DOM。或者简单地对您的服务器执行AJAX ping,并在成功发布时
window.location.reload()代码>每两分钟重新加载一个页面必须在ain中处于临界状态。用户希望看到的页面每两分钟重新加载一次,这就像是有史以来最糟糕的用户体验。以前有一个元标记,它在所有浏览器中都可以使用,但你可能从来没有听说过它,因为每个人和他们的祖母都在1995年停止使用它。@techouse我希望你重写你的评论作为答案,以便我接受它作为正确答案:)啊,太晚了。男孩们已经解决了:)完美的解决方案:)的确:非常整洁的代码;但正如其他人所指出的,它不会检测到互联网连接@stackunderflow我提出了两种不同的解决方案。如果ajax失败了怎么办。。。返回的xhr是否未定义。。。这将阻止done()函数执行。。。我说得对吗?