Mientras intentaba modificar algunas secuencias de comandos de desplazamiento para realizar enlaces "saltar a" en algunas páginas, noté que si tiene una página que contiene una etiqueta hash en la URL, el comportamiento es diferente según los navegadores cuando presiona Intro en la dirección barra, después de cargar la página.
Por ejemplo, si carga una página con un tiene en la URL y luego se aleja del elemento de destino, noté que en Firefox e IE, si coloca el cursor en la barra de direcciones y presiona Intro, la página volverá a el elemento HTML tiene el mismo atributo de id que el hashtag pero la página no se recargará .
También noté que ni los eventos popstate ni hashchange se activan en tal escenario. Lo más probable es que se active el evento de scroll , pero ¿cómo podemos saber que no es el usuario el que se desplaza sino el navegador que restablece su posición?
¿Hay alguna forma de detectar este tipo de eventos en los navegadores? Dado que esto está fuera de la ventana gráfica, tengo un poco de curiosidad. Pero tengo un escenario en el que me gustaría reposicionar el menú dependiendo de si la página se desplaza hacia arriba o hacia abajo.
Para tratar de explicar lo que estoy buscando:
#test y elemento <div id="test"><div><div>Ejemplo en JSBin (abrir en Firefox):
http://jsbin.com/rifikereze/1/edit?html,js,salida
Producción:
http://output.jsbin.com/rifikereze/1#test2
¿Cómo podemos detectar estos eventos (aparte de los eventos de desplazamiento)?
Asegúrate de usar Firefox en Windows si intentas reproducir. Parece que otros sistemas operativos tienen otros comportamientos.
Dada la falta de respuesta, mi supuesta respuesta es No
No hay forma de detectar el reposicionamiento de los navegadores utilizando identificadores de fragmentos (también conocidos como hash ) en las URL y la barra de direcciones.
Además de esto, los navegadores parecen tener comportamientos inconsistentes:
La única forma segura de detectar el reposicionamiento de identificadores de fragmentos es al cargar la página.