2012-07-30 8 views
6

Se uso la formulaCome ottenere esattamente la posizione di scorrimento massima di una pagina?

document_height - window_height = max_scroll_position 

Si restituisce 1 o 0, anche se credo che dovrebbe sempre valutare a 0. Per esempio, su Firefox Aprire la console, Scorrere fino alla fine della pagina su http://stackoverflow.com e procedere come segue su console:

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

ottengo 1 come la risposta (ricordarsi di mantenere la posizione di scorrimento verso il basso più) on jquery.com come mai, facendo quanto sopra dà 0

Cosa mi manca?

+0

vengo '0' quando si scorre verso il basso di la pagina ed eseguendo quel codice (chrome) e 1 in Firefox (compilazione in console e firebug). – travis

+0

Se stai usando Chrome, potresti essere ingrandito. Rimpicciolisci fino al livello di zoom nativo e otterrai '0'. –

+1

Gli utenti potrebbero essere ingranditi, quindi la risposta a questa domanda dovrebbe probabilmente tener conto di ciò. – Brilliand

risposta

2

Dopo alcuni test, quel 1 pixel in più è sicuramente un errore di arrotondamento. Tutte e tre queste variabili (altezza del documento, altezza della finestra e parte superiore del rotolo) vengono mantenute con una maggiore precisione interna o con la scala della finestra del browser non zoomata, quindi ridimensionate e arrotondate secondo necessità per soddisfare i requisiti delle proprietà JavaScript. In alcuni casi limite, che diventano più probabili all'aumentare del rapporto di zoom, questi valori arrotondano in un modo che produce i risultati incoerenti che hai visto.

A meno che non si aggiusti molte di queste variabili molte volte rapidamente in base ai valori delle altre variabili, è improbabile che questo errore di arrotondamento causi problemi all'utente. Se devi regolarli frequentemente, probabilmente dovresti memorizzare nella cache i numeri modificati e utilizzare la tua versione cache invece dei numeri riportati dal browser per ulteriori calcoli.

[Nota:. Ero finalmente in grado di ottenere un errore di arrotondamento del -1 con la formula nel PO, a uno zoom del 250% in Firefox]

Problemi correlati