pageYOffset/scrollTop
Sandra
- javascript
Hallo zusammen,
ich möchte gerne die Position herausfinden, an die ein Anwender bereits gescrollt hat. Wie im selhtml gefunden macht man das
im IE(6) mit
document.body.scrollTop
document.body.scrollLeft
und im NS(6) mit
window.pageXOffset
window.pageYOffset
Nun habe ich jedoch in meine Seite ein DIV mit Scrollbalken eingebaut. Und die Scrollposition soll sich auf dieses DIV beziehen. Oder besser: Ich möchte wissen, wie weit im DIV gescrollt wurde (unabhängig von der Seite). Im IE funktioniert das auch ohne Probleme mit
document.getElementByID("ID").scrollTop
Im NS(6) habe ich es auf dieselbe Art und Weise versucht. Das Ergebnis war 'undefined'. Wo liegt mein Fehler? Oder kann man etwa im NS nur die Scrollposition der gesamten Seite abfragen?
Danke für Eure Hilfe :-)
Sandra
Hallo Sandra,
document.getElementByID("ID").scrollTop
Im NS(6) habe ich es auf dieselbe Art und Weise versucht. Das Ergebnis war 'undefined'. Wo liegt mein Fehler? Oder kann man etwa im NS nur die Scrollposition der gesamten Seite abfragen?
Es wird wohl daran liegen, dass die Eigenschaft pageYOffset bei Netscape traditionellerweise eine direkte Eigenschaft des window-Objekts ist und sich deshalb immer nur auf ein Fenster (oder Framefenster) bezieht. Diese neueren Tricks, um Block-Elemente mit Hilfe von CSS mit Scrollbars auszustatten, sind in diesem alten Konzept von Netscape nicht vorgesehen, und Netscape hat sich fuer den 6er Browser offenbar auch noch nichts Neues dafuer einfallen lassen (zumindest so viel ich weiss).
Eine Konstruktion wie document.getElementByID("ID").pageYOffset wird also in die Hose gehen, weil die Eigenschaft dabei nicht dem window-Objekt, sondern einem anderen Objekt zugeordnet wird, was aus Sicht von JavaScript einfach bedeutet, dass dem Objekt (hier: der identifizierte Div-Bereich) eine Eigenschaft namens pageYOffset angedichtet wird. Das wird zwar akzeptiert, aber der Wert ist undefined, weil es keine solche Eigenschaft bei diesem Objekt gibt.
Die Eigenschaft scrollTop beim MSIE ist dagegen flexibler ausgelegt und laesst sich wohl auf beliebige DOM-Objekte anwenden.
viele Gruesse
Stefan Muenz