Hully: Doctype Kopfzeile zerstört Javascript-Funktionalität im IE

Folgender Quellcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<script language="JavaScript"><!--
 function muh() {
  alert(document.body.scrollTop);
 }
//-->
</script>
</head>
<body class="bodyLeftBorder" bgcolor="#FFFFFF"  link="#000000" vlink="#010101" alink="#900000">
<script language="JavaScript"><!--
 for(i=0;i<=100;i++) {
  document.write("<a href='#' onClick='muh();'>Link</a><br>\n");
 }
//-->
</script>
<a href='#' onClick="muh();">Link</a><br>

</body>
</html>

Normalerweise sollte Funktion muh() die Y Scrollkoordinate liefern. Allerdings liefert mein IE Browser 6.0 jedesmal "0", egal, wie weit ich runtergescrollt habe.

Entferne ich diese DOCTYPE-Zeile ganz oben, funkioniert scrollTop plötzlich. Leider kann ich diese DOCTYPE-Zeile aber nicht in meinem Projekt entfernen, weil ich nur einen Teilquellcode per ASP generiere, der Kopf und Fuss soll aber bleiben wie er ist.

Ziel ist es, dass document.body.scrollTop funkioniert, obwohl DOCTYPE ganz oben steht.

Danke für eure angeregten Gehirnströme

  1. Folgender Quellcode:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    und

    alert(document.body.scrollTop);

    funktioniert nicht. Mit diesem Doctype schaltet der IE 6 in den CSS Compat Mode. Macht also weniger Fehler ;-)

    if (document.compatMode && document.compatMode != "BackCompat")  // IE6 im "CSS1Compat" Mode
        document.documentElement.scrollTop
    else
        document.body.scrollTop;                           // IE6, 5 ...

    sollte helfen.

    Grüße,

    Jochen

    1. Wow, hehe, danke, das ging aber schnell. :)
      Nochne kleine Frage, die ich vergessen habe. Wieso scrollt Javascript im selben Zug auch noch hoch, wenn ich den Y-Scroll Wert abfrage?

      Naja, ich bau halt nen ScrollTo von dem grade rausgefundenen Wert ein oder so, aber der Sinn von diesem Hochscrollen ist mir noch eingeleuchtet.

      1. Hallo Hully,

        Nochne kleine Frage, die ich vergessen habe. Wieso scrollt Javascript im selben Zug auch noch hoch, wenn ich den Y-Scroll Wert abfrage?

        <a href='#' onClick='muh();'>Link</a>

        Erst wird die Funktion muh() ausgeführt, dann wird zum Link ("#") gesprungen.
        http://selfhtml.teamone.de/html/verweise/projektintern.htm#anker.

        Verhindern kannst Du dies durch "return false;":
        <a href='#' onClick='muh(); return false;'>Link</a>

        Grüße
        Andreas

        --
        As Einstein once said during a Thanksgiving food fight, "It's all relatives."