JavaScript in HTML einbinden

💡

Dauer: 15 Minuten

Themen:

  • script-Tag bindet JavaScript ein

Ziel: Beginn der Programmierung mit JavaScript im Browser

Die meisten Konzepte werden in Form von Live-Coding gezeigt.

Hierzu wird die Beispiel-App im aktuellen Stand ohne JavaScript so weiterentwickelt, dass die App mit JavaScript dynamisch wird (z.B. Elemente im HTML/DOM hinzufügen).

Die Inhalte auf den folgenden Seiten sind auf das Wesentliche reduziert, da zusätzliche Erläuterungen direkt vor Ort am Whiteboard oder online in Excalidraw gegeben werden.

script-Tag

HTML stellt mit script ein spezielles Element bzw. Tag bereit, mit dem JavaScript in HTML eingebettet werden kann:

<script>
  const greeting = 'Hallo JavaScript';
  console.log(greeting);
  alert(greeting);
</script>

Innerhalb eines script-Tags kann JavaScript-Code stehen, der direkt vom Browser ausgeführt wird, wenn die HTML-Seite geladen wird und der Browser bei der Verarbeitung des HTMLs auf solch ein script-Element stößt.

Hier erhalten wir durch console.log eine Ausgabe in der Konsole der Dev-Tools des Browsers und durch alert ein Hinweisfenster angezeigt.

Da der JavaScript-Code in Webanwendungen ziemlich umfangreich werden kann, wird JavaScript meistens in separate Dateien ausgelagert.

JavaScript aus Dateien einbinden

Der script-Tag wird in der Regel dafür verwendet, um JavaScript-Code aus einer Datei zu laden. Dazu steht das Attribut src bereit, in dem der Dateiname angegeben wird:

<script src="script.js"></script>

Im obigen Beispiel wird eine Datei namens script.js geladen, die im gleichen Verzeichnis liegt, wie die HTML-Datei, welche die Deklaration dieses script-Elementes enthält.

Bemerkungen

  • Es können beliebig viele script-Tags deklariert werden, um JavaScript-Code aus mehreren Dateien zu laden.
  • Anstatt einer lokalen Datei kann im src-Attribut eine URL für eine JavaScript-Datei im Web angegeben werden.
  • Für unsere „kleine“ Webanwendung genügt evtl. eine lokale JavaScript-Datei, die wir z.B. script.js nennen können.

script-Tag am Ende des HTMLs

In der HTML-Datei unserer Beispiel-App wird im head-Element ein CSS-Stylesheet mit dem link-Tag eingebunden. Es scheint daher naheliegend zu sein, direkt unterhalb des link-Elements ein script-Tag für die Einbindung unseres JavaScript-Codes zu deklarieren. Bei dieser Vorgehensweise würde der JavaScript-Code geladen und ausgeführt werden, bevor die HTML-Inhalte unserer Webanwendungen dargestellt werden.

Damit der JavaScript-Code erst dann ausgeführt wird, nachdem das HTML-Dokument geladen wurde, deklarieren wir script-Tags als letztes Element im body-Tag:

<html>
  <head>
    <!-- hier NICHT JavaScript einbinden -->
  </head>
  <body>
    <h1>Überschrift</h1>
    <!-- weitere Inhalte -->
    <!-- script-Tags für JavaScript am Ende von body! -->
    <script src="script.js"></script>
  </body>
</html>

Es ist durchaus möglich, die script-Tags am Anfang der HTML-Datei im head-Element zu deklarieren. In diesem Fall könnte die Notwendigkeit entstehen, den eingebundenen JavaScript-Code so zu programmieren, dass der Zeitpunkt abgewartet wird, bis alle HTML-Elemente dargestellt wurden (dies kann z.B. bei Bildern eine kurze Weile dauern). Zu dieser Vorgehensweise sind im Web zahlreiche Beispiele zu finden (Stichworte „html load event“ oder „DOMContentLoaded“)

Für viele Anwendungsfälle und insbesondere unsere „kleine“ Webanwendung genügt es, script-Tags am Ende des body-Elementes zu deklarieren. Dies ist meistens der einfachste Ansatz, da hierdurch die Notwendigkeit wegfällt, den Code so zu programmieren, dass auf den oben erwähnten Zeitpunkt gewartet wird.