pasar navegador llamar lanzar funciones funcion eventos evento español ejemplos desde javascript

navegador - ¿Hay alguna forma de atrapar el evento del botón Atrás en javascript?



lanzar evento javascript (6)

¿Hay alguna manera de responder al botón de retroceso que se está presionando (o presionar el botón de retroceso) en javascript cuando solo cambia el hash de ubicación? Es decir, cuando el navegador no se está comunicando con el servidor o recargando la página.



Echa un vistazo a history.js . Hay un evento html 5 statechange y puedes escucharlo.


He creado una solution que puede ser útil para algunas personas. Simplemente incluya el código en su página, y puede escribir su propia función que se llamará cuando se haga clic en el botón Atrás.

He probado en IE, FF, Chrome y Safari, y estoy trabajando. La solución que tengo funciona basada en iframes sin necesidad de sondeo constante, en IE y FF, sin embargo, debido a las limitaciones en otros navegadores, el hash de ubicación se usa en Safari.


Hice un truco divertido para resolver este problema a mi entera satisfacción. Tengo un sitio AJAX que carga contenido de forma dinámica, luego modifica window.location.hash, y tuve código para ejecutar sobre $ (document) .ready () para analizar el hash y cargar la sección correspondiente. El caso es que estaba perfectamente satisfecho con el código de carga de mi sección para navegación, pero quería agregar una forma de interceptar los botones de navegación hacia atrás y hacia adelante, que cambian la ubicación de la ventana, pero no interfieren con mis rutinas actuales de carga de páginas donde manipulo el window.location, y sondear la ventana. ubicación a intervalos constantes estaba fuera de la cuestión.

Lo que terminé haciendo fue crear un objeto como tal:

var pageload = { ignorehashchange: false, loadUrl: function(){ if (pageload.ignorehashchange == false){ //code to parse window.location.hash and load content }; } };

Luego, agregué una línea a mi script de sitio para ejecutar la función pageload.loadUrl sobre el evento hashchange , como tal:

window.addEventListener("hashchange", pageload.loadUrl, false);

Entonces, cada vez que quiero modificar window.location.hash sin activar esta rutina de carga de página, simplemente agrego la siguiente línea antes de cada window.location.hash = line:

pageload.ignorehashchange = true;

y luego la siguiente línea después de cada línea de modificación hash:

setTimeout(function(){pageload.ignorehashchange = false;}, 100);

Así que ahora las rutinas de carga de mi sección generalmente se están ejecutando, pero si el usuario pulsa los botones "volver" o "avanzar", la nueva ubicación se analiza y se carga la sección correspondiente.


onLocationChange también puede ser útil. No estoy seguro de si esto es solo una cuestión de Mozilla, parece que podría ser.