scrollTop Problem im Internet Explorer 7.0

FipsTheThief

Erfahrenes Mitglied
und zwar geht es hier um einen Punkt den ich nun nicht verstehe.Ich versuche die gescrollte Höhe herrauszufinden um eine Box dann richtig zu positionieren falls die Box weiter unten war im HTML document.

Im Opera und FF geht dies ohne Probleme mit window.pageYOffset oder pageXOffset

der IE gibt mir jedoch hier document.documentElement.scrollTop immer 0 wieder.

Nun kommt aber der Clou.

Code:
  alert(document.documentElement.scrollTop); // gibt 0 aus
  alert(document.documentElement.scrollTop); // gibt die richtige gescrollte Höhe nun raus

Es ist beides haar genau das gleiche , gestartet nachdem das Fenster vollständig geladen wurde , bzw nach window.onload losgetreten. Aber erst beim 2. Aufruf zeigt er mir die korrekte gescrollte Höhe an.

Hier nun ein Beispiel wie es nicht mehr geht ;(

Code:
   var sH = document.documentElement.scrollTop;
        sH = document.documentElement.scrollTop;
   alert(sH); // wieder bei 0 angekommen

Die Frage ist nun warum ? Hat dies bezüglich einer eine Idee , wollte es eigentlich gern vermeiden 2 mal die gescrollte Höhe abzufragen für den IE.
 
Zuletzt bearbeitet:
Hi,

der IE kennt das Objekt documentElement nur, wenn er sich im "Almost Standardmode" oder
"Full-Standardmode" befindet. Für den Fall, dass er im Quirksmode läuft, erwartet er das Objekt body.

Versuch mal, das Body-Objekt entsprechen dem gewählten Modus zu setzen.
Code:
var objBody = null;

window.onload = function(){
  if(document.all && !window.opera){
    objBody = (window.document.compatMode == "CSS1Compat")? window.document.documentElement : window.document.body || null;
  }else{
    objBody = document.documentElement;
  }
}

function fnScrollHeight(){
   var sH = objBody.scrollTop;
   sH = objBody.scrollTop;
   alert(sH); // wieder bei 0 angekommen
}
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Danke für die Antwort. Es hilft mir in gewisser Hinsicht schon nun aber leider funktionierte das auch nicht so , das mit dem Quirksmode hab ich nun schon gelesen bei anderen Beispielen die das Problem hatten.

Wobei es sich bei mir um das Problem handelt , das der IE wohl einfach nicht hinterher kommt irgendwie , ist er zu schnell oder startet das window.onload bevor das tatsächliche Dokument geladen ist ? Fakt ist der IE stinkt !

Angenommen ich habe ein Dokument welches ich mit Absicht auf 3000 px höhe ziehe , dann scroll ich runter und aktualisiere , dann zeigt er mir eine gescrollte höhe von 0px an.

Sollte ich nun aber den Aufruf zeitlich verzögert mittels window.setTimeout() starten lag bei ca 120 milli Sekunden. Dann zeigt mir auch der IE die gescrollte Höhe an.Es mag daran liegen das ich es auf direkt auf der lokalen Festplatte teste nun.

Das der Opera und FF damit kein Problem haben zeigt mal wieder die Schwächen des Internet Explorers , mit selbigen habe ich mich nun darauf geeinigt die gescrollte Höhe erst dann zu ermitteln wenn ich auf einen Link / Bild klicke da es sich eh am Ende um eine Lightbox handelt. Dann klappt es aber auch wunderbar blos ärgerlich am Endeffekt da ich es zuvor im Constructor der Funktion hatte.

Danke auf jeden Fall noch einmal , ich werd mir nun mal die Problematik mit dem Quirksmode ansehen das kannte ich noch nicht und es kann gut sein das es damit später wieder zu neuen Problemen kommt.

MfG
 
for (var key in deinElement) alert(key+' = '+deinElement[key]);

deinElement durch das body-Element ersetzen oder von welchem auch immer du die entsprechende Höhe herausbekommen möchtest und dann gucken bei welchem Key die entsprechende Höhe im IE steht.
 

Neue Beiträge

Zurück