Javascript im Head oder im Body

Hallo zusammen,

Ich hab mal ne Grundsatzfrage zur Positionierung von Javascript. In einem HTML-Dokument gibts ja den Head-Bereich und der Body-Bereich. In beiden Bereichen kann man javascript einfügen, aber manchmal liest man im Internet, man müsse es unbedingt im Head einfügen, weil es sonst nicht funktioniere.

Worauf kommt das eigentlich an? Wann spielt es eine Rolle, ob man das script-Tag im Head oder im Body unterbringt?

Viele Grüsse,
Janosh

Hallo,

es stimmt schon was man sagt, das man JavaScript manchmal im Head oder Body schreibt. Darauf kommt es ganz auf die Funktion des Scripts an. Wenn er z.B. eine Funktion enthält, die erst mit dem Befehl „body onload“ geladen werden muss (z.B. die größe des Fensters ändern) muss der Script im Head stehen. Bei anderen Funktionen in denen z.B. etwas in den Body geschrieben wird (z.B. eine Uhr), macht es Sinn, wenn man den Script in den Body stellt.
Ich hoffe ich konnte dir helfen.

MfG, DarkblaDe2308

Danke für die Antwort.
Es kommt also auf die Funktion des Scripts drauf an.

Werden somit head-scripts vor den body-scripts geladen? Also z.B. könnte man aus einem head-script auf keine function zugreifen, die im body definiert ist? Kommt es überhaupt auf die Reihenfolge der Definitionen an?

Viele Grüsse,
Janosh

Hallo,

wie gesagt, es kommt immer auf die Funktion an.
Wenn du in einem Script mehrere funktionen hast, die aufeinander aufbauen, kommt es schon darauf an, in welcher Reihenfolge du sie aufbaust. Es ist ein Unterschied ob du erst mit einem Skript 2 durch 2 und dann plus 5 rechnest, oder 5 plus 2 und dann durch 2.

MfG, DarkblaDe2308

Hallo DarkblaDe2308,

es stimmt schon was man sagt, das man JavaScript manchmal im
Head oder Body schreibt. Darauf kommt es ganz auf die Funktion
des Scripts an. Wenn er z.B. eine Funktion enthält, die erst
mit dem Befehl „body onload“ geladen werden muss (z.B. die
größe des Fensters ändern) muss der Script im Head stehen.

Gerade dann, wenn die Funktion erst aufgerufen wird, wenn die Seite vollständig geladen ist, ist es doch egal, wo sie definiert steht. Übersichtlicher ist es allerdings, wenn sie dann im HEAD-Bereich steht oder über ein externes Skript dort eingebunden wird.

Bei
anderen Funktionen in denen z.B. etwas in den Body geschrieben
wird (z.B. eine Uhr), macht es Sinn, wenn man den Script in
den Body stellt.

Nicht, wenn die Funktion auf Bestandteile der Seite zugreift, die zuerst geladen sein müssen. Zumindest muss der SCRIPT-Bereich mit dem Aufruf der Funktion im Body dann nach den entsprechenden Bestandteilen im Quellcode stehen, die zuerst geladen oder gerendert sein müssen.

Gruß Gernot

Werden somit head-scripts vor den body-scripts geladen?

Ja, das HTML-File wird von oben nach unten abgearbeitet.

z.B. könnte man aus einem head-script auf keine function
zugreifen, die im body definiert ist?

Das ist auch meine Auffassung der Dinge. Aber das lässt sich ja auch ganz leicht ausprobieren.

Kommt es überhaupt auf
die Reihenfolge der Definitionen an?

Unter Umständen schon.

Prinzipiell würde ich aber empfehlen, allein der Übersichtlichkeit halber alles, was geht, in den head zu schreiben, oder da gar noch besser in eine externe Datei.
In den body würde ich nur solche Aufrufe schreiben, die eben da hin gehören. Events z.B. machen im head keinen Sinn, die gehören immer zu einem HTML-Tag, z.B. zwecks Überprüfung eines Formulars in die entsprechenden Eingabefelder oder ins form-Tag.
Die Ausgabe von Inhalten per JavaScript z.B. macht im head keinen Sinn.
Im head per DOM auf HTML-Tags zugreifen schlägt fehl, wenn diese Elemente noch nicht aufgebaut wurden.

Ich hoffe, ich konnte etwas Licht ins Dunkel bringen.

Gruß,
-Efchen