2012-07-30 8 views
6

Si utilizo la fórmula¿Cómo obtener la posición de desplazamiento máxima de una página con precisión?

document_height - window_height = max_scroll_position 

Se evalúa a 1 o 0, aunque creo que debe evaluar constantemente a 0. Por ejemplo, en Firefox Abrir la consola, vaya a la parte inferior de la página en http://stackoverflow.com y hacer lo siguiente en la consola:

($(document).height() - $(window).height()) - $(document).scrollTop() 

consigo 1 como la respuesta (recuerde que debe mantener la posición de desplazamiento hacia abajo más) en jquery.com cómo alguna vez, haciendo lo anterior da 0

¿Qué me estoy perdiendo?

+0

recibo el mensaje '0' cuando se desplaza a la parte inferior de la página y ejecutar ese código (chrome), y 1 en Firefox (construir en consola y firebug). – travis

+0

Si usa Chrome, es posible que haya acercado el zoom. Reduzca el zoom al nivel de zoom nativo, y obtendrá '0'. –

+1

Los usuarios pueden acercarse, por lo que la respuesta a esta pregunta probablemente deba dar cuenta de eso. – Brilliand

Respuesta

2

Después de algunas pruebas, ese 1 píxel extra definitivamente es un error de redondeo. Las tres variables (altura del documento, altura de la ventana y parte superior del desplazamiento) se mantienen con mayor precisión interna o en la escala de la ventana del navegador sin escala, luego se ajustan y redondean según sea necesario para satisfacer los requisitos de las propiedades de JavaScript. En algunos casos extremos, que se vuelven más probables a medida que aumenta la relación de zoom, esos valores se redondean de una manera que produce los resultados inconsistentes que viste.

A menos que esté ajustando una o más de esas variables muchas veces rápidamente en función de los valores de las otras variables, es poco probable que este error de redondeo cause problemas visibles al usuario. Si tiene que ajustarlos con frecuencia, probablemente debería almacenar en caché los números ajustados y usar su versión en caché en lugar de los números informados por el navegador para realizar más cálculos.

[Nota:. I fue finalmente capaz de conseguir un error de redondeo de -1 utilizando la fórmula en el OP, en un zoom de 250% en Firefox]

Cuestiones relacionadas