Martin: Wo ist der document.body hingekommen?

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

  1. 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

    1. 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

      1. 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

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
      2. 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