2013-10-28 13 views
28

Sembra che body.scrollTop (e body.scrollLeft) siano obsoleti in modalità rigorosa ES5. Qual è la ragione per questo, dato che sembra ancora bene usare queste proprietà su altri DOMElement s?Perché body.scrollTop è deprecato?

Informazione:

Ho una funzione che cerca di aumentare (o diminuire, come specificato) le scrollTop valori di tutti gli antenati di un element, fino a uno di questi in realtà cambia. Mi chiedo se, per rimanere lamentato con la modalità rigorosa, dovrei controllare specificamente l'elemento body mentre la catena dei genitori si sposta verso l'alto.

[Ovviamente, body riferisce a document.body]

+3

Cosa ti fa pensare che la modalità rigorosa abbia qualche effetto su questo? La specifica ECMAScript non è correlata agli oggetti host resi disponibili dal browser nell'ambiente browser (uno dei vari ambienti in cui JavaScript può essere utilizzato) e la modalità rigorosa non può modificarli. –

+0

Oh non lo sapevo. Sto sviluppando un'estensione per Chrome e ho iniziato a ricevere un sacco di avvertimenti sulla console riguardo a body.scrollTop che è stato disabilitato in modalità strict (ho specificato '" use strict ";'). Ciò accade attualmente solo su Chrome Canary, ma presumevo che si sarebbe verificato nella versione stabile di Chrome abbastanza presto. –

+0

@ T.J.Crowder Esiste un modo per evitare i messaggi di avviso sulla 'console' (che cito nel mio ultimo commento) ?. Inoltre, se la specifica ECMAScript non è correlata a questo, perché il browser avvisa al riguardo in primo luogo? –

risposta

34

E 'proprio comportamento non corretto di Chrome che è deprecato, e che stanno avvertendo gli autori a smettere di fare affidamento su di esso.

scrolling viewport is represented by document.documentElement (<html>) in standards mode or <body> in quirks mode. (Quirks mode emula il rendering del documento di Navigator 4 e 5. Explorer)

Chrome utilizza body.scrollTop per rappresentare posizione di scorrimento della finestra in entrambe modalità, che è sbagliato. Sembra they want to fix this quindi sono incoraggianti autori di script per il comportamento standard.

Non penso che sia necessario modificare il codice. Non c'è niente di sbagliato nell'usare lo body.scrollTop in modalità standard a patto che tu capisca che rappresenta solo la posizione di scorrimento di body (in genere 0, a meno che tu non abbia dato a body una casella di scorrimento).

È possibile visualizzare l'avviso eseguendo document.body.scrollTop nella console:

body.scrollTop è deprecato in modalità rigorosa. Utilizzare documentElement.scrollTop se in modalità rigorosa e body.scrollTop solo se in modalità quirk.

-5

scrollTop riferisce a quanto l'elemento viene fatta scorrere. Questo significa che il corpo non dovrebbe avere una scrollTop perché non è mai scansionato, il corpo ha la barra di scorrimento più in alto in modo che sia possibile scorrere i contenuti ma non il corpo stesso.
L'ultima immagine in questa pagina spiega molto:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop

+1

Se si controlla sulla console, 'document.body.srollTop' ha un valore uguale a quanti pixel viene scrollata la pagina dall'alto. –

+0

Vedere: http://jsbin.com/ohUdani/1 ([fonte] (http://jsbin.com/ohUdani/1/edit)) –

+1

Le mie scuse, ho sempre capito che il corpo non dovrebbe avere scrollTop. Apparentemente ho sbagliato. –