2010-08-04 10 views

Respuesta

45
$(document).height() //returns window height 

$(document).scrollTop() //returns scroll position from top of document 
+0

que era thinkig la misma manera, pero ¿por qué console.log ($ (this) .scrollTop()) = 1.187 console.log ($ (this) .height()) = 1.762 ¿difiere tanto? Para 575px si me desplacé al final de la página. ¿Adónde se han ido esos 575px? La barra de desplazamiento no puede ser 576px :) – Somebody

+3

Baaah nuevamente es mi culpa. Estaba mirando la barra de desplazamiento con la ventana de firebug abierta. Ofc puede ser 576px ahora. :) Gracias supongo que el tema está cerrado. – Somebody

+100

-1 - Eso es muy bueno, pero no responde la pregunta, que fue sobre 'scrollHeight'. –

3

Algo como esto debería resolver su problema:

$.getDocHeight = function(){ 
    var D = document; 
    return Math.max(Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight)); 
}; 

alert($.getDocHeight()); 

Sal: llamar a esa función cada vez que lo necesite, la alerta es para propósitos de prueba ..

+0

Por alguna razón, esta función no funciona correctamente para mí; usándolo dentro de un iframe. La altura real de es 256px, esta función me da 337px y no tengo idea de dónde viene. PD Estoy usando Chrome 18. – jurchiks

+0

@jurchiks: ¿Tiene un enlace a dónde está ese iframe, para que lo eche un vistazo? – Zuul

+0

https://www.blade.dateks.lv/salidzinat?ids=58664,43586. Haga clic en cualquiera de los signos de interrogación. Me las arreglé para arreglar la mayor parte, pero dos de esas (y hay más dependiendo de los artículos que se comparan) todavía tienen un extraño, misterioso ~ 20px de margen en la parte inferior. Sin embargo, desaparece cuando cambio el tamaño de la ventana, porque lo hice cambiar las dimensiones emergentes en el cambio de tamaño de la ventana. – jurchiks

6
document.getElementById("elementID").scrollHeight 

$("elementID").scrollHeight 
+0

Entonces, ¿cuál es el elemento Id de su objeto de documento? ... tal vez quisiste decir "document.body.scrollHeight"? – BrainSlugs83

+2

$ ('# gallery'). ScrollHeight me da indefinido // # galería es id de mi desbordamiento: elemento automático, no funciona –

176

Así es como para obtener el scrollHeight de un elemento obtenido con un selector jQuery:

$(selector)[0].scrollHeight 

Si selector es la identificación del elemento (p. elemId), se garantiza que el elemento 0-indexado de la matriz será el elemento que desee seleccionar, y scrollHeight será correcto.

+12

Tenga cuidado, según la base de conocimiento de Mozilla, no es compatible con versiones de IE menores que el 8.0 https://developer.mozilla.org/en/DOM/element.scrollHeight –

+0

Exactamente como @EmanueleDelGrande dice: mira aquí: http://www.quirksmode.org/dom/w3c_cssom.html - para IE <8 DOM scrollHeight está implementado pero incorrectamente. Para mí funciona en IE 6, 7 en netrenderer pero podría no funcionar en todos los casos. – TMS

+2

De acuerdo con @Tomas, use la abstracción de jQuery para un mejor manejo de las peculiaridades del navegador cruzado. Por ejemplo, lo anterior se puede modificar a $ (selector) .offset(). Superior –

45

Si está utilizando Jquery 1.6 o superior, use prop para acceder al valor.

$(document).prop('scrollHeight') 

Las versiones anteriores solían obtener el valor de attr pero no la publicación 1.6.

+12

Esto devuelve "indefinido" para mí con jQuery 1.7.1, al igual que $ (document) .attr ("scrollHeight"). – Michael

+5

Eso es porque le falta el elemento del cuerpo. Tiene que ser $ (document.body) .prop ('scrollHeight') - en ese punto también puedes usar document.body.scrollHeight; – goddogsrunning

3

Para obtener la altura de desplazamiento real de las áreas desplazadas por la barra de desplazamiento de la ventana, utilicé $('body').prop('scrollHeight'). Esta parece ser la solución de trabajo más simple, pero no he comprobado exhaustivamente la compatibilidad. Emanuele Del Grande señala en otra solución que esto probablemente no funcionará para IE por debajo de 8.

La mayoría de las otras soluciones funcionan bien para elementos desplazables, pero esto funciona para toda la ventana. Notablemente, tuve el mismo problema que Michael para la solución de Ankit, es decir, que $(document).prop('scrollHeight') está devolviendo undefined.

6

Utiliza elementos HTML DOM, pero no el selector jQuery. Se puede utilizar como:

var height = document.body.scrollHeight; 
-1

Prueba esto:

var scrollHeight = $(scrollable)[0] == document ? document.body.scrollHeight : $(scrollable)[0].scrollHeight; 
0

Usted puede probar esto, por ejemplo, este código de poner la barra de desplazamiento en la parte inferior de todas las etiquetas DIV

Recuerde: jQuery puede aceptar una función en lugar del valor como argumento. "this" es el objeto tratado por jQuery, la función devuelve la propiedad scrollHeight del DIV actual "this" y lo hace para todos los DIV en el documento.

$("div").scrollTop(function(){return this.scrollHeight}) 
Cuestiones relacionadas