2011-05-12 11 views
6

¿Es posible actualizar una página web, por ejemplo, cada minuto cuando el usuario NO está en la página? Por ejemplo, si estoy visitando un PageX y me quedo en la página, no se actualiza, pero tan pronto como me alejo de la página (es decir, cambio a otra pestaña/ventana o un programa, el PageX se actualiza cada x minutos ? o segundos ¿Cómo hago para esta Thx¿Cómo mantener la actualización de la página periódicamente mientras el usuario está fuera de la página? y no actualizar si está en la página

actualización:?..

"en la página" significa que la página es la ventana actual es decir, que tiene el foco Así que si el PágX tiene un enlace a una ventana emergente, digamos 100 x 100, haciendo clic en que abre la ventana emergente, mientras que la página aún es visible detrás de esa pequeña ventana emergente, no tiene un foco, por lo tanto necesita actualizarse como se indicó anteriormente.

Cualquier cosa que no do lear por favor pregunte.

Actualización 2

Como sugiere Mattk a continuación .. Siguiendo parece estar funcionando en Firefox (no he comprobado en la última), y Chrome. En IE 8, si cambio a otra pestaña o programa, no 'actualiza la página, pero si estoy en la página y hago clic en la barra de direcciones, comienza a actualizar la página. ¿Alguna idea de cómo hacerlo funcionar en IE?

var pageFocused = false; 

function onPageFocus(){ 
    pageFocused = true; 
    //document.body.className = 'focused'; 
} 

function onPageBlur() { 
    pageFocused = false; 
    //document.body.className = 'blurred'; 
}; 

function checkActivity() {   
    if(pageFocused == false){ 
     location.reload(true); 
    } 
} 
setInterval("checkActivity()", 1 * 1000); 
if (!+"\v1") { // check for Internet Explorer    
    document.onfocusin = onPageFocus; 
    document.onfocusout = onPageBlur; 
} else if (/*@[email protected]*/false) { 
    document.onfocusin = onPageFocus; 
    document.onfocusout = onPageBlur; 
} else { 
    window.onfocus = onPageFocus; 
    window.onblur = onPageBlur; 
} 
+0

Su pregunta realmente no tiene mucho sentido. Si no hay nadie en la página, ¿qué necesidad hay de actualizarlo constantemente? De hecho, ¿a qué pantalla sería refrescante cuando no haya nadie que la vea? – stevecomrie

+0

@stevecomrie: Él dice que la página debe actualizarse periódicamente, cuando no tiene el foco. Ya sea porque se selecciona otra pestaña, u otra aplicación/ventana por completo. – Orbling

+0

Estimado SteveComrie, gracias por su comentario. Puede que no tenga sentido para usted, pero tiene mucho sentido en la aplicación en la que estoy trabajando. Gracias. – TigerTiger

Respuesta

1

Realice un seguimiento de la actividad del usuario en la página detectando mouseover y presionando las teclas (para aquellos que no usan un mouse), y foco de página en la página ya que no creo que el desenfoque funcione para lo que están haciendo en un nivel de documento/página. La razón es que el evento de desenfoque solo aparece cuando regresas a una pestaña, pero no cuando sales de la página.

Siempre que ocurran esos eventos (mouseover, tecla presionar o foco de página), reinicie la página enfocada a verdadero.

var pageFocused = false; 

function onPageFocus(){ 
    pageFocused = true; 
} 

Luego, cada 30 segundos, puede ejecutar una función para ver si algo ha cambiado. Esto ejecutará una función llamada checkActivity cada treinta segundos (30000 milisegundos).

setInterval("checkActivity()", 30 * 1000); 

En esa función, si no ha habido actividad en los treinta segundos, vuelva a cargar la página.

function checkActivity() { 

if(pageFocused == false){ 
    location.reload(true); 
} 

La página se volverá a cargar y volverá a establecer la página Focalizada en falso y comenzará todo de nuevo por usted.

+0

Acabo de actualizar mi pregunta para tratar de dejarlo más claro con respecto a "en la página" – TigerTiger

+0

Actualicé mi respuesta para que coincida con su actividad "en la página". – MattK311

+0

Consulte mi actualización 2. – TigerTiger

1

supongo que podría iniciar un temporizador en mousestop que es una función de controlador del controlador de eventos document.onmousemove: así que algo similar.

document.onmousemove = (function() {var onmousestop = function() { 
/* do stuff */}}); 

luego de un minuto o lo que sea, actualice la página.

2

El objeto window tiene blur y focus eventos en un gran número de browsers.

Puede adjuntar un controlador de eventos al evento blur para comenzar la actualización periódica y otro al focus para detenerlo. Esto sería tan simple como ejecutar setInterval en el blur, guardar el intervalID y luego usar clearInterval en el controlador de eventos focus para detener el sondeo.

+0

Hmm sí, necesito una solución para varios navegadores. Déjenme pensar en esto. – TigerTiger

+0

Creo que todo depende de lo que signifique "en la página". Pero esos son los eventos correctos para literalmente estar "en la página". – MattK311

+0

@ Mattk311 - básicamente "en la página" significa cuando el contenido de la página es visible para el usuario y tiene foco. – TigerTiger

Cuestiones relacionadas