2013-07-16 13 views
8

Ho reso il corpo della pagina alto 200% in modo che si adatti a uno schermo due volte. Usando javascript lo sto facendo continuare a scorrere verso l'alto o il basso quando si scorre. Per questo, ho bisogno di trovare il punto di scorrimento più basso della pagina su qualsiasi browser o dimensione dello schermo in modo che si fermi quando arriva lì.trovare la posizione di scorrimento massima di una pagina

No JQuery per favore.
Grazie.

Il mio codice: (è ancora in fase di mettere insieme così ha bisogno di un po 'di lavoro)

function getScrollXY() { 
    var x = 0, y = 0; 
    if(typeof(window.pageYOffset) == 'number') { 
     // Netscape 
     x = window.pageXOffset; 
     y = window.pageYOffset; 
    } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) { 
     // DOM 
     x = document.body.scrollLeft; 
     y = document.body.scrollTop; 
    } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { 
     // IE6 standards compliant mode 
     x = document.documentElement.scrollLeft; 
     y = document.documentElement.scrollTop; 
    } 
    return [x, y]; 
} 

function scrollup() { 
    if (xy[1] > 0) { 
     window.scrollBy(0,-100); 
     setTimeout(scrollup,200); 
    } else { 
     null; 
    } 
} 

function scrolldown() { 
    if (xy[1] <) { 
     window.scrollBy(0,100); 
     setTimeout(scrolldown,200); 
    } else { 
     null; 
    } 
} 

function dothescroll() { 
    var xy = getScrollXY(); 
    var y = xy[1]; 
    setTimeout(function(){ 
     if (xy[1] > y) { 
      scrollup(); 
     } else { 
      scrolldown(); 
     } 
    },200); 
} 

risposta

18

Questa è la versione compatibile cross browser:

var limit = Math.max(document.body.scrollHeight, document.body.offsetHeight, 
        document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight); 
+3

se si limita il limite di window.innerHeight che è la posizione di scorrimento massima.x –

+7

Non è ancora la verità: var limite = Math.max (document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) - window.innerHeight; – Jordan

6
var limit = document.body.offsetHeight - window.innerHeight; 
// document.body.offsetHeight = computed height of the <body> 
// window.innerHeight = available vertical space in the window 

Confronta xy[1] < limit

Nota: Potrebbe essere necessario aumentare il valore di margine e/o imbottitura del corpo. Puoi anche provare a utilizzare clientHeight anziché offsetHeight.

+0

che è perfetto :) x –

+0

non proprio perfetto scusa, non era compatibile con browser. Lo posterò sotto questo: –

+0

@Neil - Non ho proprio ottenuto il tuo ultimo commento. si prega di condividere i problemi che hai trovato con questo. – vsync

1

window.scrollTo (0, document.body.scrollHeight);

questo funzionerà ..

+0

si prega di approfondire il motivo per cui questa linea non funzionerà e suggerire un modo per risolverlo – tutuDajuju

0

Anche se questo non fa parte di alcuna specifica, si potrebbe provare window.scrollMaxY.

Restituisce il numero massimo di pixel in cui è possibile scorrere il documento verticalmente. https://developer.mozilla.org/docs/Web/API/Window/scrollMaxY


Fallback se non disponibile:

var scrollMaxY = window.scrollMaxY || (document.documentElement.scrollHeight - document.documentElement.clientHeight) 

Nota, documentElement non è sempre l'elemento di scorrimento (alcuni browser usano body invece). La soluzione è la nuova proprietà scrollingElement, che restituisce un riferimento all'elemento che scorre il documento. È specificato, ma è ancora una bozza di lavoro.

Problemi correlati