Warum ist body.scrollTop veraltet?
Scheint es body.scrollTop
(und body.scrollLeft
) sind deprecated in ES5 strict-Modus. Was ist der Grund für diese, da scheint es doch okay zu verwenden, diese Eigenschaften auf anderen DOMElement
s?
Hintergrund-Info:
Ich habe eine Funktion, die versucht, zu erhöhen (oder zu verringern, wie angegeben) die scrollTop
Werte aller Vorfahren einer element
, bis einer von diesen tatsächlich ändert. Ich Frage mich, ob, bleiben Beschwerde mit strict-Modus, sollte ich speziell überprüfen, gegen die body
element ist, wie die Kette der Eltern bewegt sich nach oben.
[Offensichtlich body
bezieht sich auf document.body
]
Kommentar zu dem Problem
Was macht Sie denken, strict-Modus hat keine Auswirkung auf das? Die ECMAScript-Spezifikation ist unabhängig von der host-Objekte, die der browser zur Verfügung stellt, in der browser-Umgebung (eine von mehreren Umgebungen, in denen JavaScript verwendet werden könnten), und der strikte Modus nicht ändern.
Oh, ich wusste nicht, dass. Ich bin die Entwicklung einer Erweiterung für Google chrome und ich habe immer eine ganze Reihe von Warnungen auf der Konsole über den Körper.scrollTop veraltet strict-Modus an (ich geben Sie
"use strict";
). Dieses derzeit geschieht, nur auf Chrome Canary, aber ich ging davon passieren würde, auf die stabile Chrome-Version bald genug als gut. @T. J. Crowder gibt es eine Möglichkeit kann ich vermeiden, werden die Warnmeldungen auf der
console
(, die ich erwähnt in meinem letzten Kommentar)?. Auch, wenn die ECMAScript-Spezifikation ist unabhängig von dieser, warum wird der browser warnen, dass es in den ersten Platz? @ Himanshu: Don ' T use strict-Modus? Wie, warum Chrome erwähnt strict-Modus, müssen Sie haben Ihre eigenen Gründe für die Nichtanerkennung dieses in Chrome-Erweiterungen.
Sie bedeuten standards-Modus (Dokument-rendering-Modus), nicht ES5 strict-Modus.
InformationsquelleAutor der Frage Himanshu P | 2013-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es Chrom eigenes Falsches Verhalten, das ist veraltet, und Sie sind Warnung der Autoren zu stoppen, sich auf Sie verlassen.
Den scrollen viewport ist vertreten durch
Dokument.documentElement
(<html>
), die in den standards-Modus oder<body>
im quirks-Modus. (Quirks-Modus emuliert das Dokument Rendern von Navigator 4 und Explorer 5.)Chrome verwendet
body.scrollTop
zur Darstellung der viewport ist die scroll-position in beide Modi, die falsch ist. Es klingt wie Sie wollen dieses Problem beheben so sind Sie ermutigt Autoren das Skript für das standard-Verhalten.Ich glaube nicht, müssen Sie den code ändern. Es ist nichts falsch mit der Verwendung
body.scrollTop
im standards-Modus so lange, wie Sie verstehen, es stellt die scroll-position vonbody
nur (in der Regel0
, es sei denn, Sie haben gegebenbody
eine scroll-box).Können Sie sehen, die Warnung durch ausführen
document.body.scrollTop
in der Konsole:InformationsquelleAutor der Antwort sam
Bemerkte ich meine stop-code arbeiten, die auf neueren Versionen von Chrome. Ich reparierte es mit
window.scrollY
Bevor:
Nun:
Funktioniert es die ganze Zeit jetzt. Finden Sie weitere Dokumentation hier.
Außerdem war ich mit:
nun ich ersetzte es mit:
InformationsquelleAutor der Antwort Adrian
scrollTop bezieht sich darauf, wie viel das element gescrollt wird. Dies bedeutet, dass Körper nicht haben sollte eine scrollTop denn es ist nie gerollt, hat der Körper die oberste scrollbar-es ist also der Inhalt kann gescrollt werden, 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
InformationsquelleAutor der Antwort Marvin Brouwer