Si va a una página a y se desplaza, actualice la página se actualizará en el lugar donde la dejó. Esto es genial, sin embargo, esto también ocurre en páginas donde hay una ubicación de anclaje en la URL. Un ejemplo sería si hiciera clic en un enlace http://example.com/post/244#comment5
y actualizara la página después de mirar a su alrededor, no estaría en el ancla y la página salta. ¿Hay alguna forma de evitar esto con javascript? Para que no importa lo que sea, siempre navegará hasta el ancla.
javascript
browser
ThomasReggi
fuente
fuente
Respuestas:
Esta solución ya no se recomienda debido a cambios en el comportamiento del navegador. Vea otras respuestas.
Básicamente, si se usa un ancla, nos vinculamos al evento de desplazamiento de Windows. La idea es que el primer evento de desplazamiento debe pertenecer al reposicionamiento automático realizado por el navegador. Cuando esto ocurre, hacemos nuestro propio reposicionamiento y luego eliminamos el evento vinculado. Esto evita que los siguientes desplazamientos de página estropeen el sistema.
fuente
En Chrome, incluso si fuerza scrollTop a 0, saltará después del primer evento de desplazamiento.
Debes vincular el pergamino a esto:
Por tanto, se engaña al navegador para que crea que estaba al principio antes de la actualización.
fuente
window.onbeforeunload = function(){ window.scrollTo(0,0); }
Para deshabilitar la restauración automática de desplazamiento, simplemente agregue esta etiqueta a la sección del encabezado.
No es compatible con IE. Compatibilidad del navegador.
fuente
Después de varios fallos finalmente logré hacer el truco. anzo es correcto aquí, ya que usar
beforeunload
hará que la página salte a la parte superior cuando un usuario vuelva a cargar la página o haga clic en un enlace. Asíunload
es claramente la forma de hacer esto.Forma de Javascript (Gracias ProfNandaa ):
EDITAR: 16/07/2015
El problema del salto sigue ahí con Firefox incluso con
unload
event.fuente
beforeunload
solución porque evita saltar a la parte superior de la página en recargas y clics de anclaje.Aquí hay un enfoque más general. En lugar de intentar evitar que el navegador se desplace (o salte a la parte superior como se vería), simplemente restauro la posición anterior en la página. Es decir, estoy grabando el desplazamiento y actual de la página en localStorage y me desplazo a esta posición una vez que la página se ha cargado.
fuente
Puede poner un # al final para que la página se cargue en la parte superior.
Funciona en todos los navegadores, móviles y de escritorio, porque es muy simple.
});
// Esto carga la página con un # al final.
fuente
Esto funciona para mi.
fuente
Deberias ser capaz de.
Onload, compruebe si
window.location.hash
tiene un valor. Si es así, tome el elemento con una identificación que coincida con el valor hash. Encuentre la posición del elemento (llamadas recursivas a offsetTop / offsetLeft) y luego pase esos valores alwindow.scrollTo(x, y)
método.Esto debería desplazar la página hasta el elemento deseado.
fuente