如何在特定时间自动重新加载网页?

时间:2009-08-02 01:13:47

标签: javascript html reload

我有一个网站,我想在某个时间重新加载,比如下午3:35,而不是在像5分钟这样的特定时间间隔之后。我该怎么做?

9 个答案:

答案 0 :(得分:45)

以下JavaScript代码段允许您在给定时间刷新:

function refreshAt(hours, minutes, seconds) {
    var now = new Date();
    var then = new Date();

    if(now.getHours() > hours ||
       (now.getHours() == hours && now.getMinutes() > minutes) ||
        now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
        then.setDate(now.getDate() + 1);
    }
    then.setHours(hours);
    then.setMinutes(minutes);
    then.setSeconds(seconds);

    var timeout = (then.getTime() - now.getTime());
    setTimeout(function() { window.location.reload(true); }, timeout);
}

然后您可以添加脚本标记来调用refreshAt()函数。

refreshAt(15,35,0); //Will refresh the page at 3:35pm

答案 1 :(得分:5)

<META HTTP-EQUIV="Refresh" CONTENT="5">

这将强制页面每5秒重新加载一次。只需计算正确的间隔并将其添加到内容标记

答案 2 :(得分:1)

基本上,当访问页面时,计算访问时间与您要重新加载页面的时间之间剩余的时间,并在元刷新标头中使用剩余时间。显然,这需要在CGI脚本或Web应用程序中完成,或者可能需要在SSI(服务器端包含)中完成;如果您拥有的只是一个静态HTML文件,它将无法工作。

另一种选择是使用Javascript,但如果客户端禁用了Javascript,它将无效。

答案 3 :(得分:1)

我发现这个页面有一个类似的问题,并用它来解决一个可能对某些人有用的更具体的答案。对于这个项目,我们希望确保一旦全球感兴趣的直播活动即将进行页面刷新,激活嵌入用户页面的播放器(狭窄的用例,我知道 - 其他人可能更好地使用它)。

上述答案中的一个挑战是如何处理时区转换,这对我们来说更成问题,因为我们希望确保页面在特定的日期和时间刷新。为此,我抓住了目标日期的UTC版本和今天的日期,将它们转换为GMT,然后将Andrew的超时功能设置为两者之间的差异。


var target = new Date("January 28, 2011 13:25:00");
timeOffset = target.getTimezoneOffset() * 60000;
targetTime = target.getTime();
targetUTC = targetTime + timeOffset;

var today = new Date();
todayTime = today.getTime();
todayUTC = todayTime + timeOffset;

refreshTime = (targetUTC - todayUTC);
if (refreshTime > 1) {
    setTimeout(function() { window.location.reload(true); }, refreshTime);
}

答案 4 :(得分:0)

基本上,有许多javascript代码可以刷新页面,所以只需几分钟或者其他东西,你可以编辑它们以便在几小时内刷新。像这样:

//enter refresh time in "minutes:seconds" Minutes: 0 to Whatever
//Seconds should range from 0 to 59
var limit = "0:30";

if (document.images) {
    var parselimit = limit.split(":");
    parselimit = parselimit[0] * 60 + parselimit[1] * 1;
}
var beginrefresh = function () {
    if (!document.images) return if (parselimit == 1) window.location.reload()
    else {
        parselimit -= 1;
        curmin = Math.floor(parselimit / 60);
        cursec = parselimit % 60;
        if (curmin != 0) curtime = curmin + " minutes and " + cursec + " seconds left until page refresh!";
        else curtime = cursec + " seconds left until page refresh!";
        window.status = curtime;
        setTimeout("beginrefresh()", 1000);
    }
}

window.onload = beginrefresh;

(现在只计算你想要刷新的分钟和秒数,比如每天中午如果现在是中午的话:

var limit = "1440:00";

现在您可以使用此代码,但大多数代码不能用于服务器时间,而且根据您提供给我们的信息,我们真的无法做更多的事情。编辑您的问题并告诉我们您是否希望将其与服务器时间或其他内容计时。

答案 5 :(得分:0)

这对我而言效果更好。

如果您能够使用Jquery和MomentJs,则可以执行以下操作:

(function () {
    var $ = require('jquery');
    var moment = require('moment');

    function refreshPageAtTime(expiration, countdownElement) {
        var now = moment.utc();
        console.log('now', now);
        var expirationMoment = moment.utc(expiration, 'YYYY-MM-DD kk:mm:ss');
        console.log('target', expirationMoment);
        var secondsUntilRefresh = expirationMoment.diff(now, 'seconds');//http://momentjs.com/docs/#/displaying/difference/
        console.log('diff in seconds', secondsUntilRefresh);
        if (secondsUntilRefresh > 1) {
            setInterval(function () {
                secondsUntilRefresh--;
                console.log('seconds remaining', secondsUntilRefresh, 'seconds');
                if (secondsUntilRefresh <= 10) {
                    countdownElement.html(secondsUntilRefresh + '...');
                    if (secondsUntilRefresh === 0) {
                        console.warn('Refreshing now at ' + moment.utc());
                        window.location.reload(true);
                    }
                }
            }, 1000 * 1);
        }
    }

    $(document).ready(function () {
        var expiration = $('form').attr('data-expiration');
        console.log('expiration', expiration);
        $('.btn-primary:submit').after('<div id="countdownToRefresh" style="display: inline-block; color: #999; padding: 10px;"></div>');
        refreshPageAtTime(expiration, $('#countdownToRefresh'));

    });
})();

答案 6 :(得分:0)

希望有帮助,您可以设置确切的刷新时间

var wwids = matches.Select(m => int.Parse(m.Value)).ToList();

答案 7 :(得分:0)

如果您使用 Flask,您可以设置与网络时间同步的变量。在 Flash 应用程序中

from datetime import *`
    def syncRefresh():`
      while (datetime.now().second % 10 !=0):`
          continue`
       return True`

和@app.route('/', methods =["GET"})

    def table():
       ....
         if syncRefresh():
            refreshNow = True  # refreshNow is the variable passed to the web page

在 html 页面中

     {% if refreshNow  %}
         <meta http-equiv="refresh"   content="1">
    {% endif %}

答案 8 :(得分:-2)

使用此按钮每20秒刷新一次页面。

<META HTTP-EQUIV="refresh" CONTENT="20">