2010-09-08 33 views
81

Estoy creando un sitio web que publico con div s. Cuando actualizo la página después de desplazarla a la posición X, la página se carga con la posición de desplazamiento como X.Fuerza la posición de desplazamiento de la página hacia arriba al actualizar la página en HTML

¿Cómo puedo forzar el desplazamiento de la página hacia arriba al actualizar la página?

  • Lo que ocurre es de unos JS o jQuery ejecuta como onLoad() función de la página para SET las páginas desplazarse hasta la parte superior. Pero no sé cómo podría hacer eso.

  • Una mejor opción sería si hay alguna propiedad o algo para que la página cargada con su posición de desplazamiento por defecto (es decir, en la parte superior), que será algo así como página de carga, en lugar de actualización de la página.

+0

Sorprendentemente, ninguna de las soluciones que aquí trabajaron para mí, pero éste lo hizo: http://stackoverflow.com/a/11486546/470749 – Ryan

Respuesta

120

Puede hacerlo utilizando el método scrollTop en DOM ready:

$(document).ready(function(){ 
    $(this).scrollTop(0); 
}); 
+0

o '$ (document) .scrollTop (0);' de todos modos, gracias funciona bien. – zulucoda

+0

no funciona en safari – Ben

+4

Pero esto -> http://stackoverflow.com/a/18633915/102133 hace. – Ben

7

Comprobar la función jQuery .scrollTop()here

Se vería algo así como

$(document).load().scrollTop(0); 
+1

Tengo la intención de votar, pero parece que voto abajo y ahora está bloqueado:/mi mal. –

8

También puede intente

$(document).ready(function(){ 
    $(window).scrollTop(0); 
}); 

Si desea desplazarse en la posición x que puede cambiar el valor de 0 a x.

+0

Gracias a ankit sus trabajos son perfectos para mí. – Hardik

+0

Mi placer ... Hardik –

28

La respuesta aquí no funciona para safari, document.ready a menudo se dispara demasiado pronto.

Ought utilizar el beforeunload evento que evitar que se pueda hacer un poco de setTimeout

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
+1

Añadir después de la función de desplazamiento: $ ('html'). Text (''); , así que la carriola se reiniciará – user956584

+1

@Userpassword ¿No crees que $ ("html"). remove() sería mejor? – Ben

83

Para una implementación simple llanura JavaScript:

window.onbeforeunload = function() { 
 
    window.scrollTo(0, 0); 
 
}

+1

¡Manera de encender cosas en su cabeza! Este es de lejos el método más confiable. ¡Gracias! – ctrlplusb

+0

@ctrlplusb - me alegro de que lo haya encontrado útil :) – ProfNandaa

+0

Buen código ... trabajando ... – Vishnu

4
<script> location.hash = (location.hash) ? location.hash : " "; </script> 

Coloque la secuencia de comandos anterior en la etiqueta <head> de su html. ¡No estoy seguro de cómo se comportan las páginas individuales! Pero seguro funciona como encanto en páginas regulares.

2
$(document).ready(function(){ 
    $(window).scrollTop(0); 
}); 

no funcionó para mí, como Google Chrome acaba de desplazarse hacia abajo después de que la página termine de cargar. Lo que utilicé fue

$(document).ready(function() { 
    var url = window.location.href; 
    console.log(url); 
    if(url.indexOf('#') < 0) { 
     window.location.replace(url + "#"); 
    } else { 
     window.location.replace(url); 
    } 
}); 

// Esto carga la página con un # al final. Por lo tanto, siempre se cargará en la parte superior.

2

Una vez más, la mejor respuesta es:

window.onbeforeunload = function() { window.scrollTo(0,0);

(eso es por falta de jQuery, miran hacia arriba si usted está buscando OFR el método JQ)

EDIT: un pequeño error de su "onbeforunload" :) Chrome y otros navegadores "recuerdan" la última posición de desplazamiento antes de la descarga, por lo que si establece el valor en 0,0 solo para la descarga de su página, recordarán de 0,0 y no se desplazarán hacia barra de desplazamiento fue :)

2

La respuesta aquí (desplazándose en $(document).ready) no funciona si hay un video en la página. En ese caso, la página se desplaza después de que se dispare este evento, anulando nuestro trabajo.

Mejor respuesta debería ser:

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
4

En lugar de location.reload(), basta con utilizar location.href = location.href. No se desplazará a la posición anterior como lo hace location.reload().

Nota: Esto no se volverá a cargar si hay alguna # en la URL

Cuestiones relacionadas