2013-10-28 23 views
28

Es scheint, body.scrollTop (und body.scrollLeft) sind in ES5 strict-Modus veraltet. Was ist der Grund dafür, angesichts der Tatsache, dass es immer noch in Ordnung scheint, diese Eigenschaften auf anderen DOMElement s zu verwenden?Warum ist body.scrollTop veraltet?

Hintergrund Info:

Ich habe eine Funktion, die (oder Abnahme, wie angegeben) zu erhöhen, versucht die scrollTop Werte aller Vorfahren eines element, bis einer von ihnen tatsächlich ändert. Ich frage mich, ob, um Beschwerde mit strict-Modus zu bleiben, ich speziell gegen die body Element überprüfen sollte, wie die Kette der Eltern nach oben bewegt.

[Offensichtlich bezieht sich body auf document.body]

+3

Was lässt Sie glauben, dass der strikte Modus irgendwelche Auswirkungen hat? Die ECMAScript-Spezifikation steht nicht im Zusammenhang mit den Hostobjekten, die der Browser in der Browserumgebung zur Verfügung stellt (eine der verschiedenen Umgebungen, in denen JavaScript verwendet werden kann), und der strikte Modus kann sie nicht ändern. –

+0

Oh, ich wusste das nicht. Ich entwickle eine Chrome-Erweiterung und ich fing an, eine Reihe von Warnungen auf der Konsole über body.scrollTop zu erhalten, der strenger Modus veraltet ist (ich spezifiziere '" use strict ";'). Dies passiert derzeit nur auf Chrome Canary, aber ich vermutete, dass es bald auch auf der stabilen Chrome-Version passieren würde. –

+0

@ T.J.Crowder Gibt es eine Möglichkeit, die Warnmeldungen auf der "Konsole" (die ich in meinem letzten Kommentar erwähne) zu vermeiden. Wenn die ECMAScript-Spezifikation nicht damit in Verbindung steht, warum warnt der Browser überhaupt davor? –

Antwort

34

Es ist Chrome eigenes falsche Verhalten, das ist veraltet, und sie warnen Autoren unter Berufung auf ihn zu stoppen.

Die scrolling viewport is represented by document.documentElement (<html>) in standards mode or <body> in quirks mode. (Quirks mode emuliert das Dokument-Rendering von Navigator 4 und Explorer 5.)

Chrom verwendet body.scrollTop das Darstellungsfeld der Bildlaufposition in beiden Modi darstellen, was falsch ist. Es klingt wie they want to fix this, also ermuntern sie Autoren, Skript für das Standardverhalten zu erstellen.

Ich glaube nicht, dass Sie Ihren Code ändern müssen. Es ist nichts falsch daran, body.scrollTop im Standardmodus zu verwenden, solange Sie verstehen, dass es nur die Bildlaufposition body darstellt (normalerweise 0, es sei denn, Sie haben body ein Bildlauffeld angegeben).

Sie können die Warnung sehen von document.body.scrollTop in der Konsole ausführen:

body.scrollTop wird im Strict-Modus als veraltet. Bitte verwenden Sie documentElement.scrollTop wenn im strikten Modus und body.scrollTop nur wenn im Quirks-Modus.

-5

scrollTop bezieht sich auf wie viel das Element gescrollt wird. Dies bedeutet, dass body kein scrollTop haben sollte, da es nie gescrollt wird, body hat die oberste scrollbar, so dass der Inhalt gescrollt werden kann, aber nicht der Körper selbst.
Das letzte Bild auf dieser Seite erklärt einiges:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop

+1

Wenn Sie in der Konsole nachsehen, hat 'document.body.srollTop' einen Wert, der gleich ist, wie viele Pixel die Seite von oben scrollt. –

+0

Siehe: http://jsbin.com/ohUdani/1 ([Quelle] (http://jsbin.com/ohUdani/1/edit)) –

+1

Entschuldigung, ich habe immer verstanden, dass Körper ScrollTop nicht haben sollte. Offensichtlich liege ich falsch. –

Verwandte Themen