Doctype Kopfzeile zerstört Javascript-Funktionalität im IE
Hully
- javascript
0 Maxx
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
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
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.
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