El siguiente código se usa para buscar el elemento que se puede desplazar (body o html) a través de javascript.Cómo determinar si "html" o "body" se desplaza por la ventana
var scrollElement = (function (tags) {
var el, $el, init;
// iterate through the tags...
while (el = tags.pop()) {
$el = $(el);
// if the scrollTop value is already > 0 then this element will work
if ($el.scrollTop() > 0){
return $el;
}
// if scrollTop is 0 try to scroll.
else if($el.scrollTop(1).scrollTop() > 0) {
// if that worked reset the scroll top and return the element
return $el.scrollTop(0);
}
}
return $();
} (["html", "body"]));
// do stuff with scrollElement...like:
// scrollElement.animate({"scrollTop":target.offset().top},1000);
Este código funciona perfectamente cuando la altura de la document
es mayor que la altura de la window
. Sin embargo, cuando la altura del document
es igual o menor que window
, el método anterior no funcionará porque scrollTop()
siempre será igual a 0. Esto se convierte en un problema si el DOM se actualiza y la altura del document
crece más allá la altura del window
después de ejecutar el código.
Además, por lo general, no espero hasta que esté listo el documento para configurar mis controladores de Javascript (esto generalmente funciona). I podría agregar un div alto al body
temporalmente para forzar el método anterior para que funcione PERO eso requeriría que el documento esté listo en IE (no se puede agregar un nodo al elemento del cuerpo antes de que se cierre la etiqueta). Para obtener más información sobre el tema document.ready
"antipatrón" read this.
Entonces, me encantaría encontrar una solución que encuentre el elemento desplazable incluso cuando el document
es corto. ¿Algunas ideas?
por qué no usar si ($ EL .scrollTop()> = 0)? EDITAR: wow me acabo de dar cuenta de que esta pregunta es muy vieja –