Axel Richter: Flackern beim Verstecken über onload()

Beitrag lesen

Hallo,

rendert aber nach Setzen von .disabled = true nicht neu. Das tut er aber auch nicht mit document.getElementsByTagName("style")[1].disabled = true;
muß er doch auch gar nicht - wenn diese Anweisung im head steht und ausgeführt wird, bevor er mit dem Rendern angefangen hat.

Nein, das beeindruckt ihn wieder zu sehr ;-). Dann kennt er zwar auch schon document.styleSheets, document.styleSheets.length ist aber noch 0, weswegen natürlich auch wieder kein disabled gesetzt wird.

Beispiel:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
        "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
<title>Titel</title>  
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
<link rel="stylesheet" href="style.css" type="text/css">  
<style type="text/css">  
 body {background-color:red;}  
 * {color:blue;}  
</style>  
<style type="text/css">  
 body {background-color:green;}  
 * {color:yellow;}  
</style>  
<script type="text/javascript">  
<!--  
 window.onload = function() {  
  if (document.styleSheets) {  
   alert(document.styleSheets.length);  
   document.styleSheets[2].disabled = true;  
   document.getElementsByTagName("style")[1].disabled = true;  
   alert(document.styleSheets[2].disabled);  
  }  
 };  
//-->  
</script>  
</head>  
<body>  
 <p>Test</p>  
</body>  
</html>  

So kennt der Konqueror die korrekte document.styleSheets.length mit 3. Er setzt auch disabled auf true, das document.styleSheets[2] bleibt aber trotzdem aktiv.

Macht man das nicht window.onload, sondern sofort, dann ist für den Konqueror document.styleSheets.length gleich 0.

viele Grüße

Axel