Pregunta

Es posible detectar cuando el usuario hace clic en el botón atrás del navegador?

Tengo una aplicación Ajax y si puedo detectar cuando el usuario hace clic en el botón atrás me puede mostrar los datos apropiados de la espalda

Cualquier solución utilizando PHP, JavaScript es preferible.El infierno de una solución en cualquier idioma está bien, sólo necesito algo que me puede traducir a PHP/JavaScript

Editar:Cortar y pegar de abajo:

Wow, excelentes respuestas.Me gustaría utilizar Yahoo pero yo ya uso de Prototype y Scriptaculous las bibliotecas y no quiero añadir más bibliotecas de ajax.Pero utiliza iFrames lo que me da un buen puntero para escribir mi propio código.

¿Fue útil?

Solución

Hay varias formas de hacerlo, aunque algunos sólo funcionan en determinados navegadores.Uno que yo conozco la parte superior de mi cabeza es la de incorporar una pequeña cerca-iframe invisible en la página.Cuando el usuario pulsa el botón atrás el iframe es desplazado de la espalda que puede detectar y, a continuación, actualizar su página. Aquí es otra solución.

También puede ser que desee ir a ver el origen de algo, como gmail y ver cómo lo hacen.

Aquí una biblioteca para el tipo de cosa que usted está buscando la manera

Otros consejos

Uno de mis favoritos de marcos para hacer esto es Yahoo!'s el Historial del Navegador Administrador.Usted se registre eventos y se llama cuando el usuario regrese a ese estado.Y si usted desea aprender cómo funciona, he aquí una divertida entrada de blog acerca de las decisiones de Yahoo!hecho cuando el diseño de la misma.

No hay manera de saber cuando un usuario hace clic en el botón atrás del presiona la tecla de retroceso para volver atrás en el navegador, sin embargo, hay otros eventos que suceden en un orden determinado, que son detectables.Este ejemplo de javascript tiene un razonablemente buen método para la detección de la espalda comandos:

La manera tradicional, sin embargo, es seguir el movimiento del usuario a través de su sitio mediante la utilización de cookies o páginas de referencia.Cuando el usuario va a la página, a continuación, la página de B, entonces aparece en la página de Un nuevo (sobre todo cuando no hay enlace de B a a), a continuación, usted sabe que fue de nuevo - Un puede detectar esto y redireccionar o de otra manera.

El Yahoo de la Interfaz de Usuario de la Biblioteca, que es mi favorita del lado del cliente JS biblioteca, tiene una excelente El Historial Del Navegador Administrador que hace exactamente lo que usted está pidiendo.

La forma más sencilla para comprobar si has vuelto a una versión en caché de la página, que debe ser renovado, es añadir una entrada ocultos elemento que va a ser almacenado en caché, y usted puede comprobar si tiene todavía su valor predeterminado.

Sólo tiene que colocar la siguiente dentro de la etiqueta body.Yo la mía lugar justo antes de la etiqueta de cierre.

<input type="hidden" id="needs-refresh" value="no">
<script>
    onload=function(){
        var e = document.getElementById("needs-refresh");
        if (e.value === "yes")
            location.reload();
        e.value = "yes";
    }
</script>

Me puse una variable $wasPosted en $_SESSION con valor false.

Todos mis posts ir a través de la misma archivo php, y establecer $wasPosted a true.

Todos header(location:) las solicitudes están precedidos por la configuración de $wasPosted a true.

Si $wasPosted es false a continuación, la página se ha cargado después de la utilización de atrás o de los botones de avance.

El kit de herramientas dojo tiene la funcionalidad para lidiar con esto en javascript.Creo que no hay ninguna buena manera de manejarlo en PHP puro.

Aquí está la documentación de la página que tienen: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top