Felix Riesterer: warum kommt nix bei document.body.scrollTop?

Beitrag lesen

Liebe Selfer,

ich habe mit dem IE6 was ganz verrücktes herausgefunden. Meine Seite ist im XHTML1 strict gehalten, der IE6 also im CSS1Compat-Modus. Zuerst mein Script, das verdeutlicht, was ich meine:

var x_pos = y_pos = "0px";

if(window.innerWidth)
      {
      x_pos = Math.ceil((window.innerWidth + window.pageXOffset - 100)/2) + "px";
      y_pos = Math.ceil((window.innerHeight + window.pageYOffset - 100)/2) + "px";
      }
    else if(document.documentElement && document.documentElement.scrollTop)
      {
      alert("element!" + document.documentElement.scrollTop);
      x_pos = Math.ceil((document.documentElement.offsetWidth + document.documentElement.scrollLeft - 100)/2) + "px";
      y_pos = Math.ceil((document.documentElement.offsetHeight + document.documentElement.scrollTop - 100)/2) + "px";
      }
    else if (document.body)
      {
      alert("body!" + document.body.scrollTop);
      x_pos = Math.ceil((document.body.offsetWidth  - 200)/2) + "px";
      y_pos = Math.ceil((document.body.offsetHeight - 200)/2) + "px";
      }

Wenn die Seite zu Ende geladen hat, der User aber noch nix gescrollt hat, dann kommt bei Click auf einen entsprechenden onclick-Link die Meldung "body!0", was bedeutet, das der if-Zweig mit document.body gegriffen hat. Wenn der User dann aber die Seite weiter scrollt, dann kommt auf denselben Click hin die Meldung "element!253". Das bedeutet doch wohl, dass durch das Scrollen des Users der IE sein DOM verändert, aus document.body mal eben document.documentElement macht (warum das _jetzt_ erst?!?), um mir dann mit der Eigenschaft scrollTop einen Wert != 0 ausgeben zu können.

Empfindet das außer mir noch jemand als völlig idiotisch und durchgeknallt?

Liebe Grüße aus Ellwangen,

Felix Riesterer.