Wo ist der document.body hingekommen?
Martin
- javascript
Hallo,
mir kommt da wo (im IE6) der document.body abhanden. Wo ist er hin? Bzw. was scrollt da jetzt, wenn nicht der body?
------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
Seitenbeginn
<div id=oDiv style="position:absolute; width:100px; height:100px; left: 400px; top: 900px; background-color:#FF0000" onClick=alert(document.body.scrollTop)>
</div>
</body>
</html>
Output: 148 (Wenn ich weit genug hinunterscrolle um zu clicken)
------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
Seitenbeginn
<div id=oDiv style="position:absolute; width:100px; height:100px; left: 400px; top: 900px; background-color:#FF0000" onClick=alert(document.body.scrollTop)>
</div>
</body>
</html>
Output: 0 (Wenn ich genau so weit gescrollt habe)
------------
Wie kann ich trotzdem feststellen, wie weit die Seite gescrollt worden ist?
Gruß und Dank
Martin
Hallo,
Wie kann ich trotzdem feststellen, wie weit die Seite gescrollt worden ist?
Wenn sich der IE6 im strikten Anzeigemodus befindet, mußt du hier m.W.
document.documentElement statt document.body
verwenden.
Gruß, Jan
He, danke. Von document.documentElement hab ich noch nie was gehört. Steht anscheinend auch nicht in SELFHTML, ich kann's jedenfalls nicht finden.
Danke
Martin
Hallo Martin.
He, danke. Von document.documentElement hab ich noch nie was gehört. Steht anscheinend auch nicht in SELFHTML, ich kann's jedenfalls nicht finden.
In der Spezifikation zu DOM Level 2 Core wirst du fündig.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo,
He, danke. Von document.documentElement hab ich noch nie was gehört.
So ganz klar ist mir das Verhalten in allen Fällen auch nicht. Ich versuche
es mal zu erklären.
'document.documentElement' liefert dir das Wurzelelement des Dokuments. In
deinem Fall also 'HTML'.
Definiere einfach mal ein 'border' für <body>. Dann siehst du, daß dein
absolut positioniertes Element im standardkonformen Modus gar nicht mehr
innerhalb von <body> liegt (der ist nur so hoch wie sein nicht aus dem Fluss
genommener Inhalt). Deshalb hilft auch der Zugriff über 'document.body' nicht
viel, obwohl 'document.body' auch im standardkonformen Modus existiert.
'document.body.offsetHeight' würde dir auch hier die Höhe des <body>-Elements
liefern, nur ist die eben nicht gleich der Höhe des gesamten Dokuments.
Dein absolut positioniertes <div> liegt aber innerhalb von <html>. Wenn du dir
also über 'document.documentElement' das <html>-Element holst und dessen
Höhe oder Scrollposition abfragst, klappt es wieder.
Was ich in dem Zusammenhang nicht verstehe, ist das Verhalten von HGBildern,
die für <body> definiert sind. Da wird dann im standardkonformen Modus die
Grafik außerhalb ihres Containers angezeigt. Zumindest solange man das
Dokument nicht z.B. als 'application/xhtml+xml' ausliefert. Verstehe wer will ...
Gruß, Jan