HTML 自动刷新页面但先检查连接

1 投票
3 回答
1380 浏览
提问于 2025-04-18 14:01

我有一个基于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);

撰写回答