2009-08-02 16 views
10

Tengo un sitio web que quiero volver a cargar en un momento determinado, como 3:35 pm, no después de un intervalo específico como 5 minutos. ¿Cómo puedo hacer eso?¿Cómo volver a cargar automáticamente una página web en un momento determinado?

+0

Un poco más de contexto, "recargar" cómo/dónde/qué, qué tipo de servidor web? – nos

+4

Vamos a necesitar MANERA más información que esta. Comenzando con una pregunta real. –

+3

Reescribí la pregunta para que quede más clara, con suerte obtuve la intención correcta de Edwin. –

Respuesta

36

El siguiente fragmento de código JavaScript le permitirá actualizar en un momento dado:

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

continuación, puede agregar una etiqueta de secuencia de comandos para llamar a la función refreshAt().

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

Podrían ayudarme con un ejemplo que tienen sólo unos minutos y segundos de esta 'refreshAt (35,0);' – davidb

1

Básicamente, cuando se accede a la página, calcular cuánto tiempo se queda entre el tiempo de acceso y el tiempo que desea volver a cargar la página, y utilizar ese tiempo restante en la cabecera meta de actualización. Obviamente, esto tendría que hacerse en una secuencia de comandos CGI o aplicación web, o posiblemente con SSI (incluye servidor); no funcionará si todo lo que tiene es un archivo HTML estático.

Otra alternativa sería usar Javascript, pero no funcionará si el cliente tiene Javascript desactivado.

+1

** @ David: ** El problema de hacer que el lado del servidor es que las zonas horarias diferentes, y usted don' t siempre tiene la información en el tz del cliente. –

+0

Eso puede no ser necesario. El PO no dijo si quería volver a cargar la página en un momento dado en la zona horaria del cliente o de la zona horaria del servidor. –

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

esto obligará a la página a volver a cargar cada 5 segundos. Simplemente calcule el intervalo correcto y agréguelo a la etiqueta de contenido

+4

** @ Sorantis: ** El problema de hacer que el lado del servidor es que las zonas horarias diferentes, y no siempre tienen la información sobre tz del cliente. –

+0

Tiene usted razón. Supongo que Javascript es la solución óptima. – Sorantis

+2

pregunta es acerca de los intervalos de tiempo y no específicos de tiempo – random

0

Básicamente, hay muchos códigos javascript que pueden actualizar la página cada tanto o algo así, puede editarlos para actualizar también en horas. Como éste:

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

(ahora sólo calcular los minutos y los segundos que desea que se actualice, como por ejemplo el mediodía todos los días si fuera mediodía ahora:

var limit = "1440:00"; 

Ahora usted puede utilizar este código de excepción , la mayoría de ellos no funcionan con el tiempo del servidor, y con la información que nos proporcionó, realmente no podemos hacer nada más. Edite su pregunta y díganos si desea que se sincronice con el tiempo del servidor, o alguna otra cosa

1

Encontré esta página con una pregunta similar y la utilicé para hac K una respuesta más específica que puede ser útil para algunos. Para este proyecto, queríamos asegurarnos de que la página se actualizara una vez que un evento en vivo de interés mundial estaba a punto de comenzar, activando el reproductor insertado en la página del usuario (caso de uso limitado, lo sé; otros podrían tener un mejor uso para eso).

Uno de los desafíos en las respuestas anteriores era cómo lidiar con las conversiones de zona horaria, lo cual era más un problema para nosotros porque queríamos asegurarnos de que la página se actualizara en un día y hora específicos. Para hacer esto, agarré una versión UTC de la fecha objetivo y la fecha de hoy, las convertí a GMT, luego establecí la función de tiempo de espera de Andrew a la diferencia entre las dos.


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

uso de este actualizar la página cada 20 segundos.

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