我想定期更新网页,并且我希望浏览器仅在页面可用时更新。正确的 nov 我正在使用这个:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
setInterval("location.reload()", 66000);
});
</script>
如果由于某种原因页面不可用,是否可以不更新?
我想定期更新网页,并且我希望浏览器仅在页面可用时更新。正确的 nov 我正在使用这个:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
setInterval("location.reload()", 66000);
});
</script>
如果由于某种原因页面不可用,是否可以不更新?
您可以ajax
提前检查一个微小的资源,例如:
$(document).ready(function() {
setInterval(maybeRefresh, 66000);
function maybeRefresh() {
$.ajax({
url: "/path/to/tiny/resource",
type: "GET",
success: function() {
// That worked, do the full refresh
location.reload();
}
});
}
});
...但我倾向于认为你最好只load
更新更新的内容。将所有主要内容放在一个带有 , 的元素中id
"main"
,然后:
$(document).ready(function() {
setInterval(function() {
$("#main").load("/path/to/new/content");
}, 66000);
});
这会将元素的内容替换为从to#main
接收到的内容。如果失败,则不更新。GET
/path/to/new/content
GET
我可能还会使用链式setTimeout
而不是 asetInterval
并通过尝试更积极地刷新来处理错误。就像是:
$(document).ready(function() {
setTimeout(refresh, 66000);
function refresh() {
$.ajax({
url: "/path/to/new/content",
type: "GET",
success: function(html) {
// Success, update the content
$("#main").html(html);
// Reload in 66 seconds
setTimeout(refresh, 66000);
},
error: function() {
// Failed, try again in five seconds
setTimeout(refresh, 5000);
}
});
}
});
您可能想要使用 HTML5 缓存清单功能。为此,请在html
元素的manifest
属性中指定清单文件路径:
<!DOCTYPE HTML>
<html manifest="cache.manifest">
然后将网站的所有资源添加到清单文件中,例如:
CACHE MANIFEST
# v11
/index.html
/main/features.js
/main/settings/index.css
http://example.com/images/scene.jpg
http://example.com/images/world.jpg
现在,如果您对 index.html 执行 GET 请求,浏览器将仅在缓存清单文件可用且已更改时才会执行实际请求(为了强制更新,您可以在缓存清单注释中存储版本号并需要时更新它)。否则,页面将从浏览器的缓存中重新加载。