Hi,
<script>document.documentElement.className += ' js';</script>
Bedeutet das, überall, wo eine Klasse vorhanden ist (oder auch da wo keine vorhanden ist?), wird die klasse 'js' hinzugefügt, auch wenn das Dokument noch gar nicht vollständig geladen ist (das Script steht ja im <head>)?
Nein.
Dem einen Element, auf das document.documentElement referenziert, wird die Klasse "js" hinzugefügt - hinzugefügt dadurch, dass der aktuelle Inhalt seines className-Attributes um " js" erweitert wird, so dass eine Klasse, die es ggf. bereits vorher verpasst bekommen hat (per Attribut, oder evtl. auch durch ein vorher eingesetztes Script mit vergleichbaren Absichten), erhalten bleibt.
Du kennst dieses documentElement vermutlich unter dem Elementnamen HTML ;-)
Und da das Script im HEAD steht, der ein Nachfahre von HTML ist, darf davon ausgegangen werden, dass das HTML- bzw. documentElement zu diesem Zeitpunkt bereits existiert.
Steht die Klasse 'js' dadurch, sobald geladen, "von Anfang an" im Dokument ohne, daß die Seite erst mal kurz ohne die Klasse dargestellt wird?
Der Inhalt des Script-Elementes wird vom Browser beim Parsen ausgeführt, sobald er darauf stößt - und der restliche Parse-Vorgang wird für diesen winzigen Moment angehalten.
Da die darzustellenden Inhalte idR. erst nach dem HEAD im BODY kommen, ist wenn diese gerendert werden also schon alles vorbereitet, um ihre Darstellung gleich auf den Regeln im CSS basieren zu lassen, die sie als Nachfahren des HTML-Elements (bzw. „eines Elements“, je nach exaktem Selektor) mit der Klasse .js ansprechen.
Nachfrage 2:
<!--[if lt IE 9]><script src="/style/ie-html5elements.js"></script><![endif]-->
Welchen Zweck hat das? Was muß beim IE9 besonders berücksichtigt werden?
Nicht IE 9, sondern alle IE kleiner 9 - lt ist kurz für Englisch “less then”. (Siehe http://de.selfhtml.org/css/layouts/browserweichen.htm#alternative)
Berücksichtigt werden muss, dass diese keine HTML5-Elemente kennen, und diese ohne JavaScript-Nachhilfe nicht korrekt ins DOM einbauen können/wollen.
Stichwort: html5 shiv
MfG ChrisB
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?