Ich habe eine Website, die ich zu einer bestimmten Zeit, wie 3:35 pm geladen werden soll, nicht nach einem bestimmten Intervall wie 5min. Wie mache ich das?Wie wird eine Webseite zu einer bestimmten Zeit automatisch neu geladen?
Antwort
Die folgende JavaScript-Schnipsel ermöglicht es Ihnen, zu einem bestimmten Zeitpunkt zu aktualisieren:
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);
}
Dann können Sie ein Skript-Tag hinzufügen, die refreshAt()
Funktion aufzurufen.
refreshAt(15,35,0); //Will refresh the page at 3:35pm
könntest du bitte mit einem Beispiel helfen, um nur Minuten und Sekunden zu haben wie diese 'refreshAt (35,0);' – davidb
Grundsätzlich, wenn die Seite zugegriffen wird, berechnen, wie viel Zeit zwischen dem Zugriffszeit verbleibt und die Zeit, die Sie die Seite neu geladen werden soll, und verwenden, die in der Meta-Refresh-Header verbleibende Zeit. Offensichtlich müsste dies in einem CGI-Skript oder einer Webanwendung oder möglicherweise mit SSI (serverseitigen Includes) geschehen; Es funktioniert nicht, wenn Sie nur eine statische HTML-Datei haben.
Eine andere Alternative wäre die Verwendung von Javascript, aber es funktioniert nicht, wenn der Client Javascript deaktiviert hat.
** @ David: ** Das Problem mit der Server-Seite ist, dass Zeitzonen sich unterscheiden, und Sie nicht ' t haben immer die Informationen auf dem Client tz. –
Das ist möglicherweise nicht notwendig. Das OP hat nicht gesagt, ob er die Seite zu einem bestimmten Zeitpunkt in der Zeitzone des Clients oder in der Zeitzone des Servers neu laden wollte. –
<META HTTP-EQUIV="Refresh" CONTENT="5">
Dadurch wird die Seite alle 5 Sekunden neu geladen. Berechnen Sie einfach das richtige Intervall und fügen Sie es zum Inhalt tag
** @ Sorantis: ** Das Problem mit der Server-Seite ist, dass Zeitzonen unterscheiden, und Sie haben nicht immer die Informationen auf dem Client tz. –
Sie haben Recht. Ich schätze Javascript ist die optimale Lösung. – Sorantis
Frage ist über spezifische Zeit und nicht Intervalle der Zeit – random
Grundsätzlich gibt es viele Javascript-Codes da draußen, die die Seite immer so Minuten oder etwas aktualisieren können, können Sie sie auch um Stunden zu aktualisieren. Wie diese:
//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;
(jetzt berechnen nur die Minuten und Sekunden Sie es wollen aktualisieren, wie zum Beispiel mittags jeden Tag, wenn es Mittag jetzt waren:
var limit = "1440:00";
Jetzt können Sie diesen Code verwenden, außer Die meisten von ihnen arbeiten nicht mit der Serverzeit, und mit den Informationen, die Sie uns gegeben haben, können wir wirklich nichts mehr tun. Bearbeiten Sie Ihre Frage und sagen Sie uns, ob Sie mit der Serverzeit oder etwas anderem zeitlich abgestimmt werden möchten
Ich habe diese Seite mit einer ähnlichen Frage gefunden und verwendet, um sie zu hac k eine spezifischere Antwort, die für einige von Nutzen sein kann. Bei diesem Projekt wollten wir sicherstellen, dass die Seite aktualisiert wurde, sobald ein Live-Event von globalem Interesse weiterging und den auf der Benutzerseite eingebetteten Player aktivierte (enger Anwendungsfall, ich weiß - andere könnten einen besseren Nutzen daraus ziehen es).
Eine der oben genannten Antworten bestand in der Frage, wie mit Zeitzonenumwandlungen umgegangen werden sollte. Dies war für uns ein größeres Problem, da wir sicherstellen wollten, dass die Seite zu einem bestimmten Zeitpunkt aktualisiert wurde. Um dies zu tun, griff ich nach einer UTC-Version des Zieldatums und des heutigen Datums, setzte sie in GMT um und setzte dann die Timeout-Funktion von Andrew auf den Unterschied zwischen den beiden.
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);
}
Verwenden Sie dies, um die Seite alle 20 Sekunden zu aktualisieren.
<META HTTP-EQUIV="refresh" CONTENT="20">
Ein bisschen mehr Kontext, "reload" es wie/wo/was, welche Art von Web-Server? – nos
Wir brauchen mehr Informationen als das. Beginnend mit einer tatsächlichen Frage. –
Ich schrieb die Frage um, um es klarer zu machen - hoffentlich habe ich Edwins Absicht richtig verstanden. –