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

IT技术 javascript html reload
2021-02-03 01:46:15

我有一个网站,我想在某个时间(例如下午 3 点 35 分)重新加载,而不是在 5 分钟等特定时间间隔之后重新加载。我怎么做?

6个回答

以下 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

请注意,此代码将根据客户端本地时间刷新如果您希望它处于特定时间而不管客户端的时区如何,您可以将时间对象上的get*()and set*()(except getTime())替换为它们的getUTC*()setUTC*()等效的,以便将其固定到 UTC。

在 2018 年仍然有效。我不得不把它全部包装起来我 $( document ).ready(function() { 但它很好用。
2021-03-14 01:46:15
@davidb function refreshAtM_S(m,s) { refreshAt(0, m, s); }
2021-03-15 01:46:15
你能帮忙举个例子,只有这样的分秒吗? refreshAt(35,0);
2021-04-05 01:46:15
我可以确认这在 2020 年对我有帮助!对于其他想要使用 jQuery 的文档就绪代码: $(document).ready(function() { refreshAt(15,35,0); });
2021-04-11 01:46:15
<META HTTP-EQUIV="Refresh" CONTENT="5">

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

我非常喜欢这个解决方案。不是这个问题的完美答案,但我认为这是一个很好的解决方案,因为它避免了 java 脚本。你只需要计算时间服务器端。时区根本不应该很难。
2021-03-20 01:46:15
@Sorantis:在服务器端执行此操作的问题在于时区不同,并且您并不总是拥有有关客户端 tz 的信息。
2021-03-31 01:46:15
问题是关于特定时间而不是时间间隔
2021-04-09 01:46:15

我发现这个页面有一个类似的问题,并用它来破解一个可能对某些人有用的更具体的答案。对于这个项目,我们希望确保在全球感兴趣的实时事件即将开始时刷新页面,激活嵌入在用户页面上的播放器(狭义的用例,我知道——其他人可能有更好的用途它)。

上述答案中的一个挑战是如何处理时区转换,这对我们来说更像是一个问题,因为我们希望确保页面在特定的日期和时间刷新。为此,我获取了目标日期和今天日期的 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);
}
超级有帮助。我最终使用了@atfornes 版本。我仍然对“60000”timeOffset什么感到困惑它有效,但如何!
2021-03-16 01:46:15
不同地区的目标日期会有所不同,这就是为什么我们调整您的代码以直接在以下位置创建 UTC 日期:gist.github.com/atfornes/346cc199c1ce6ac2a7f9bec4b65ccd83
2021-03-18 01:46:15
这正是我要找的,谢谢!
2021-03-29 01:46:15

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

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

@David:在服务器端执行此操作的问题在于时区不同,并且您并不总是拥有有关客户端 tz 的信息。
2021-03-18 01:46:15
那可能没有必要。OP 没有说明他是想在客户端时区还是服务器时区的给定时间重新加载页面。
2021-03-30 01:46:15

基本上,有许多 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";

现在您可以使用此代码,除了它们中的大多数不适用于服务器时间,并且根据您提供给我们的信息,我们真的无能为力。编辑您的问题并告诉我们您是否希望它与服务器时间或其他时间同步。