JavaScripts werden wahlweise innerhalb von Script-Bereichen im HTML-Dokument notiert, oder in separaten Textdateien, die dann in solche Script-Bereiche eingebunden werden können.
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Die Unix-Zeitansage</title> <script> function fillHeading() { now = new Date(); document.getElementById('timestamp').innerHTML = now.getTime(); } </script> </head> <body onload="fillHeading()"> <h1 id="timestamp"></h1> <p>Die Überschrift zeigt den Unix-Zeitstempel des Ladezeitpunkts dieser Webseite.</p> </body> </html>
Mit <script> leiten Sie einen Bereich für JavaScript innerhalb eines HTML5-Dokuments ein (script = Quelltext). Mit </script> wird der Bereich beendet. Innerhalb des Bereichs können Sie Anweisungen der verwendeten Script-Sprache notieren.
Da HTML5 ECMAScript bzw. JavaScript als Defaultsprache für Scripts annimmt, benötigen Sie keine weitere Angabe zur verwendeten Scriptsprache. Wenn Sie HTML4.0-kompatibel arbeiten wollen, müssen Sie die verwendete Scriptsprache jedoch in jedem Fall explizit angeben. Dazu notieren Sie <script type="text/javascript">. Die Angabe zum MIME-Typ ist in HTML 4.0(1) Pflicht. Mit type="text/javascript" geben Sie den MIME-Typ für JavaScript-Dateien an. In HTML5 müssen Sie das type-Attribut nur verwenden, wenn Sie eine andere Scriptsprache als ECMAScript bzw. JavaScript verwenden.
Das veraltete, aber immer noch häufig anzutreffende Attribut language="JavaScript" erkennen moderne Browser zwar noch, doch sie sollen es HTML5 zufolge nur dann versuchen zu interpretieren, wenn das <script>-Tag kein type-Attribut enthält.
Aus Sicht eines Browsers, der das script-Element kennt, wird alles, was innerhalb des Bereichs steht, als „nackter Text“ betrachtet. Bei Parsern, die das script-Element nicht kennen, kann es jedoch zu Konflikten mit JavaScript-Inhalten kommen. Ein solcher Parser betrachtet den Script-Bereich nämlich als beendet, sobald er auf die nächste Zeichenfolge </ stößt.
Sie können einen Bereich definieren, der nur angezeigt wird, wenn die verwendete Scriptsprache nicht verfügbar ist, oder wenn der Anwender sie in seinem Browser deaktiviert hat.
Wichtig ist eine solche Angabe beispielsweise, wenn Ihre Seiten intensiv JavaScript benutzen, um Inhalte anzuzeigen oder Navigationen zu steuern. In solchen Fällen ist ein Projekt ohne JavaScript kaum nutzbar. Mit einem Noscript-Bereich können Sie alternative HTML-Inhalte einbauen, beispielsweise zusammenfassende Inhalte oder einfache Navigationslisten.
Das nachfolgende Beispiel greift die h1-Überschrift des Beispiels weiter oben wieder auf:
<h1 id="timestamp"><noscript>[nicht ermittelbar]</noscript></h1>
In diesem Fall wird die Überschrift nicht wie im Beispiel weiter oben mit leerem Inhalt vorbelegt, sondern mit einem Noscript-Bereich. Mit <noscript> leiten Sie einen Noscript-Bereich ein, mit </noscript> beenden Sie ihn.
Browser, die das noscript-Element kennen, zeigen den Inhalt dazwischen nur dann an, wenn der Anwender die benutzte Scriptsprache deaktiviert hat oder der Browser die Scriptsprache nicht kennt. Browser, die gar keine Scriptsprachen kennen, kennen zwar in der Regel auch das noscript-Element nicht, aber wenn sie HTML-konform interpretieren, ignorieren sie die Auszeichnung einfach und zeigen den Inhalt des Elements ganz normal an.
Sie können noscript-Bereiche überall notieren. Was im Elementinhalt erlaubt ist, richtet sich nach der Umgebung, in der ein noscript-Element steht. Wird es im Dokumentkopf notiert, darf es nur typische Kopfelemente wie style, link, base oder meta enthalten. Im obigen Beispiel darf es nur Phrasing-Context-Elemente enthalten, weil es innerhalb einer Überschrift notiert ist, die als Elementinhalt nur Phrasing-Context erlaubt (siehe auch: Content-Modelle.
Korrekturen, Hinweise und Ergänzungen
Bitte scheut euch nicht und meldet, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Diskutieren wählen. Es ist keine Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden allerdings kommentarlos entfernt.