2009-04-10 18 views
5

Quiero un controlador de eventos que se active cuando el usuario acceda a la recarga. ¿Está encendido o recarga nuevamente el controlador correcto para agregar? Además, ¿esto incluso se disparará antes o después de la descarga? ¿Hay inconsistencias en el navegador? Gracias.Javascript: ¿una actualización o una recarga?

Respuesta

5

No creo que haya eventos llamados onrefresh o onreload. Puede saber cuándo se está descargando la página, pero saber por qué (es decir, hacia dónde se dirige el usuario) está fuera del entorno limitado de seguridad de JavaScript. La única forma de saber si la página ha sido recargada es saber dónde estaba el usuario en la última solicitud de la página, que también está fuera del alcance de JavaScript. A veces puede obtenerlo a través del document.referrer, pero depende de la configuración de seguridad del navegador para permitir el acceso a esa información.

+0

por lo que yo puedo decir: funciona IE 8 Safari 4 no funciona FF 3 Chrome 2 todas las bandas en Win7 – Thomaschaaf

0

No hay onreload o eventos OnRefresh que yo sepa. Ciertamente, desde JavaScript que se ejecuta en un navegador esto tiene poco sentido. La ventana existente y todos sus contenidos se descartan efectivamente. Por lo tanto, debe utilizar onunload del contexto existente o el evento de carga del nuevo contexto que se crea como resultado de la recarga.

2

Si combina la configuración de una cookie con una para la página específica, con una comprobación del evento de carga, puede simular el evento inexistente que busca. Puede ajustar la caducidad de la cookie para que solo se cuente una recarga si la carga inicial fue un intervalo de tiempo determinado.

0

Creo que artlung puede haber encontrado una forma, en realidad ... su versión, sin embargo, se basa en las cookies, y esas pueden ser cortadas del uso de muchas maneras; la solución, entonces, es el uso de un lenguaje de servidor de su elección para guardar la marca de tiempo de cuando la página es unload ed a través de JavaScript (siendo una vulnerabilidad, sí, pero ¿por qué no lanzar otra idea por ahí, ¿eh?) y luego probando nuevamente en cada carga de página; si detecta una diferencia de menos de unos pocos segundos, el usuario probablemente solo recargó su página. :)

0

podría utilizar una sesión. más fácil que una cookie y no tiene que preocuparse por la caducidad o la base de datos. Eso te cubriría para cualquier página excepto la primera. No creo que la sesión superglobal esté disponible hasta la segunda página. Si eso es un problema, puede iniciar una sesión y volver a cargar la página inmediatamente si no hay una sesión activa.

0

La propiedad del controlador de eventos WindowEventHandlers.onbeforeunload contiene el código ejecutado cuando se envía la carga previa. Este evento se dispara cuando una ventana está a punto de descargar sus recursos.

window.onbeforeunload = function() { 
    return 'Are you sure you want to leave?'; 
} 

Esto mostrará un cuadro de diálogo de confirmación para el usuario con el mensaje que devolvió en su función. Dará al usuario una opción de abandonar esta página o cancelarla.

No hay forma de evitar la confirmación, ya que podría utilizarse por motivos maliciosos.

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

+0

Una pequeña explicación sobre el código mejoraría su responder drásticamente –

Cuestiones relacionadas