HTML 自动刷新页面但先检查连接
我有一个基于Python的Flask网页应用,它在一个HTML页面上显示一些SQL信息。
这个页面是半实时的,每15分钟会通过简单的HTML刷新来更新一次:
<META HTTP-EQUIV="refresh" CONTENT="9000">
只要连接正常,内部代码没有错误,这个刷新就能正常工作。
但是现在我不想在页面无法正确刷新时(比如连接问题或内部错误)还要手动去刷新页面。
有没有办法让网页在固定的时间间隔内自动刷新,不管上一次刷新是否成功?
目前这个HTML页面没有使用任何JavaScript之类的,只是Flask自带的模板引擎Jinja2生成的普通HTML。
是不是可以先完全加载网页,然后检查是否成功,再进行刷新呢?
3 个回答
-2
可以试试这个
function update_site() {
$.ajax(
{
url: "/my/page/url/",
dataType: "html",
cache: false,
success: function(event)
{
var update_html = /^.*<body>(.*)<\/body>.*$/g.exec(event)[1];
$('body').html(update_html);
},
error: function(event) {
}
});
}
// Run every 10 minutes.
window.setInterval(function() {
update_site();
// To refresh site every 15 min
}, 15000000);
0
你可以写一些JavaScript代码,在按钮被按下时检查网络连接。可以使用navigator.onLine这个属性,它在所有主流浏览器中都能正常工作。
想了解更多,可以点击这里: http://www.w3schools.com/jsref/prop_nav_online.asp
1
如果你使用像 jQuery 这样的JavaScript库,你就可以通过异步的 Ajax函数 来实现这个功能。下面是一个例子,展示了如何每15分钟更新一次你的 <body>
内容,前提是内容成功加载:
function update_site() {
$.ajax({
url: "/my/page/url/",
dataType: "html",
cache: false,
success: function(data) {
// Replace body with loaded site. You can do more checks here to check
// if the fetched content is all there.
var body_html = /^.*<body>(.*)<\/body>.*$/g.exec(data)[1];
$('body').html(body_html);
},
error: function(data) {
// Couldn't load site.
}
});
}
// Run every 15 minutes.
window.setInterval(function() {
update_site();
}, 15*60*1000);