2009-08-02 15 views
10

Mam stronę internetową, którą chcę ponownie załadować w określonym czasie, np. 15:35, a nie po określonym czasie, np. 5 minut. Jak mogę to zrobić?Jak automatycznie ponownie załadować stronę internetową o określonej godzinie?

+0

Nieco więcej kontekstu, "przeładuj" to jak/gdzie/co, jakiego rodzaju serwer WWW? – nos

+4

Będziemy potrzebować więcej informacji, niż to. Począwszy od faktycznego pytania. –

+3

Przepisałem to pytanie, aby było jaśniejsze - mam nadzieję, że mam zamiar Edwina dobrze. –

Odpowiedz

36

Poniższy fragment kodu JavaScript pozwala na odświeżenie w danym momencie:

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); 
} 

Następnie można dodać tag skryptu do wywołania funkcji refreshAt().

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

Czy możesz pomóc z przykładem, aby mieć tylko minuty i sekundy takie jak ten 'refreshAt (35,0);' – davidb

1

Zasadniczo, gdy strona jest dostępna, należy obliczyć, ile czasu pozostałego między czasem dostępu i czasu chcesz odświeżyć stronę i używać, pozostały czas w nagłówku meta odświeżania. Oczywiście trzeba to zrobić w skrypcie CGI lub aplikacji internetowej, lub prawdopodobnie z SSI (z włączeniem serwera); to nie zadziała, jeśli wszystko, co masz, to statyczny plik HTML.

Inną opcją jest użycie Javascript, ale nie zadziała, jeśli klient ma wyłączoną obsługę JavaScript.

+1

** @ David: ** Problem z robieniem tego po stronie serwera jest taki, że strefy czasowe się różnią, a ty nie. t zawsze mają informacje na tz klienta. –

+0

To może nie być konieczne. OP nie powiedział, czy chciał przeładować stronę w określonym czasie w strefie czasowej klienta lub w strefie czasowej serwera. –

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

to wymusi ładowanie strony co 5 sekund. Wystarczy obliczyć prawidłową częstotliwość i dodać go do zmiennej zawartości

+4

** @ Sorantis: ** Problem z obsługą po stronie serwera polega na tym, że strefy czasowe są różne i nie zawsze są one dostępne w tz klienta. –

+0

Masz rację. Domyślam się, że JavaScript jest optymalnym rozwiązaniem. – Sorantis

+2

Pytanie dotyczy określonego czasu, a nie interwałów czasu. – random

0

Zasadniczo istnieje wiele kodów javascript, że obecnie nie można odświeżyć stronę kiedykolwiek tak minut lub czegoś, można je edytować, aby odświeżyć w godzinach zbyt. Jak ten:

//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; 

(teraz po prostu obliczyć minuty i sekundy chcesz go odświeżyć, jak na przykład w południe każdego dnia, jeśli to było w południe teraz:

var limit = "1440:00"; 

Teraz można użyć tego kodu z wyjątkiem większość z nich nie działa z czasem serwera, a dzięki informacjom, które nam dostarczyłeś, naprawdę nie możemy zrobić nic więcej.Roztwórz swoje pytanie i powiedz nam, czy chcesz, aby czas był z czasem serwera, lub czymś innym

1

Znalazłem tę stronę z podobnym pytaniem i użyłem jej do hac k bardziej konkretną odpowiedź, która może być użyteczna dla niektórych. Do tego projektu, chcieliśmy się upewnić, że strona odświeżane raz na żywo przypadku globalnego zainteresowania miał iść dalej, aktywując embed graczem na stronie użytkownika (wąski przypadek użycia, wiem - inni mogą mieć lepsze zastosowanie dla to).

Jednym z wyzwań w powyższych odpowiedziach był sposób radzenia sobie z konwersjami strefy czasowej, co było dla nas większym problemem, ponieważ chcieliśmy upewnić się, że strona została odświeżona w określonym dniu i czasie. Aby to zrobić, chwyciłem wersję docelową UTC i dzisiejszą datę, przekonwertowałem ją na GMT, a następnie ustawiłem funkcję limitu czasu Andrew na różnicę między tymi dwoma.


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); 
} 
0

Służy do odświeżania strony co 20 sekund.

<META HTTP-EQUIV="refresh" CONTENT="20"> 
Powiązane problemy