javascript - down - $(document).scrollTop() siempre devuelve 0
scrolltop div (8)
Eliminando height: 100%;
Las etiquetas html y body pueden resolver el problema.
La razón:
El motivo es que podría haber establecido el 100% como valor de la propiedad de altura de los elementos html y body. Si establece la propiedad de altura de los elementos html y cuerpo en 100%, obtendrán una altura igual a la altura del documento.
Vea esto: https://www.dawoodnajam.tech/blog/2017/11/17/jquery-scrolltop-returns-0/
Simplemente estoy tratando de hacer algo una vez que la posición de desplazamiento de la página alcanza una cierta altura. Sin embargo, scrollTop()
está devolviendo 0 o null
sin importar qué tan abajo me desplace. Esta es la función de ayuda que estoy usando para verificar el valor de scrollTop()
:
$(''body'').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
He intentado adjuntar scrollTop()
a $(''body'')
, $(''html'')
y por supuesto $(window)
, pero nada cambia.
¿Algunas ideas?
Mi solución, después de probar algunos de los anteriores y que no implica cambiar ningún CSS:
var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )
Esto funciona en versiones actualizadas de Chrome, Firefox, IE y Edge.
Por alguna razón, la eliminación de ''altura: 100%'' de mis etiquetas html y body solucionó este problema.
¡Espero que esto ayude a alguien más!
Por cierto, parece que deberías usar
$("body").scrollTop()
en lugar de
$(".some-class").scrollTop
Por eso estoy atascado.
Scroll Top siempre devolvía 0 para mí también. Lo estaba usando para enfocar el elemento específico en una página. Utilicé otro enfoque para hacerlo.
document.getElementById ("elementID"). scrollIntoView ();
Trabajando bien para mí en dispositivos móviles, tabletas y computadoras de escritorio.
Solo tengo un complemento para aquellos que pueden cometer el mismo error que yo. Mi código fue el siguiente:
var p = $(''html,body'');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
Este código funcionará en todos los navegadores, excepto en los navegadores de webkits como chrome y safari, ya que la etiqueta <html>
siempre tiene un valor scrollTop de cero o nulo.
Los otros navegadores lo ignoran mientras que los navegadores de webkit no.
La solución más simple es simplemente eliminar la etiqueta html de su código y voila:
var p = $(''body'');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
Tuve el mismo problema con scroll = 0 en:
document.body.scrollTop
Uso la próxima vez
document.scrollingElement.scrollTop
Editar 01.06.2018
Si usa el event
entonces tiene un objeto que tiene un elemento de document
en target
o srcElement
. Aquí hay una tabla que muestra la operación de desplazamiento en diferentes navegadores.
Como puede ver, Firefox e IE no tienen srcElement
y IE 11 no admite scrollingElement
.
tenia el mismo problema scrollTop () funciona con algún bloque, no documento o cuerpo. Para hacer que este método funcione, debe agregar altura y estilo de desbordamiento para su bloque:
#scrollParag {
height: 500px;
overflow-y: auto;
}
Y entonces:
var scrolParag = document.getElementById(''scrollParag'');
alert(scrolParag.scrollTop); // works!