Oliver: Wann kommt ein JavaScript in den HEAD und wann in BODY ?

Hallo.

Wann kommen Java Scripte eigentlich in den HEAD und wann in den BODY?

Danke
Oli

  1. Wann kommen Java Scripte eigentlich in den HEAD und wann in den BODY?

    In den Body sollten Sie nur in Inline-Event-Handlern kommen.

    1. Hallo Oli,

      um valides (X)HTML zu schreiben MUSS das script-Element im head-Element sein und darf nirgends anders auftauchen. Das hängt direkt mit den DTDs für die einzelnen (X)HTML-Varianten zusammen.

      ...
      <script>
      document.getElementById("text").style.border="1px solid red"
      </script>
      </head>
      <body>
      <p id="text">der Text</p>
      ...

      Dieses Beispiel wäre valid, liefert aber kein Ergebnis, da ein Browser Dokumente Zeile für Zeile einliest und das script nach Einlesen des script-Elements sofort ausgeführt wird.
      Zu diesem Zeitpunkt ist dem Browser das Element mit ID "text" noch nicht bekannt.

      ...
      </head>
      <body>
      <p id="text">der Text</p>
      <script>
      document.getElementById("text").style.border="1px solid red"
      </script>
      ...

      Dieses wiederum ist nicht valid, liefert aber das erwünschte Ergebnis, da dem Browser das Element mit der ID "text" jetzt bekannt ist.
      Darum ist <script> teilweise auch im <body> (de-)platziert.

      Gruß aus Berlin!
      eddi

      1. Hallo Oli,

        Bin nicht Oli.

      2. Hallo XaraX,

        Dieses wiederum ist nicht valid, liefert aber das erwünschte Ergebnis, da dem Browser das Element mit der ID "text" jetzt bekannt ist.

        Da das Dokument noch nicht vollständig geladen ist, könnte der DOM-Baum auch noch nicht verfügbar sein.
        Es ist auf jeden Fall besser, solchen code mit obload="" im Body aufzurufen, da das Dokument dann vollständig geladen ist.

        Grüße

        Daniel

      3. Hallo XaraX (oder eddi?)

        Erst mal danke für deine Antwort.

        Also, wenn ich valides JavaScript erzeugen will muss ich alles an JavaScript in den HEAD tun, oder wie?

        Danke nochmal
        Oli

      4. um valides (X)HTML zu schreiben MUSS das script-Element im head-Element sein und darf nirgends anders auftauchen. Das hängt direkt mit den DTDs für die einzelnen (X)HTML-Varianten zusammen.

        Wo steht denn das?
        Jedenfalls nicht bei selfhtml, da steht zum Thema Elternelement von <script> nämlich folgendes:

        Darf innerhalb der folgenden HTML-Elemente vorkommen:
        [Block-Elemente] | [Inline-Elemente] | head | body
        (body nur bei  HTML transitional)

        http://selfhtml.teamone.de/html/referenz/elemente.htm#script

        Der Scriptbereich kann also überall stehen, nur nicht als direktes Kind des bodies. Das gilt übrigens auch für die übrigen inline Elemente und normalen Text.

        Und der W3C-Validator hält sich auch daran.

        Gruß
        C2H5OH

        1. Hi C2H5OH,

          wieder was gelernt. Danke!

          Gruß aus Berlin!
          eddi

      5. hi,

        [...] Dieses Beispiel wäre valid, liefert aber kein Ergebnis
        [...] Dieses wiederum ist nicht valid, liefert aber das erwünschte Ergebnis, da dem Browser das Element mit der ID "text" jetzt bekannt ist.

        hurra.
        und wann beschäftigst du dich mal mit dem konzept der "funktionen"?

        gruss,
        wahsaga

        1. hi wahsaga,

          hurra.

          warum solch ein Freudenausbruch?

          und wann beschäftigst du dich mal mit dem konzept der "funktionen"?

          Funktionen waren nicht gefragt, oder irre ich? Es wurde nach Gründen für die Position des scrip-Element gefragt, denke ich.

          Gruß aus Berlin!
          eddi

          1. hi,

            hurra.
            warum solch ein Freudenausbruch?

            weil dein posting so "schön" war :-)

            Funktionen waren nicht gefragt, oder irre ich? Es wurde nach Gründen für die Position des scrip-Element gefragt, denke ich.

            ja, und deshalb erklärst du "das ist valide, 'funzt' aber nicht", und "das ist nicht valide, 'funzt' aber"?
            finde ich ein wenig suboptimal.

            ein hinweis, ruhig an hand deines beispiel, dass man sowas dann in eine funktion packt, und diese z.b. onLoad aufruft, wäre m.E. hilfreicher gewesen.

            gruss,
            wahsaga

            1. hi wahsaga,

              hurra.
              warum solch ein Freudenausbruch?

              weil dein posting so "schön" war :-)

              Aha (man lern nie aus ;)

              Funktionen waren nicht gefragt, oder irre ich? Es wurde nach Gründen für die Position des scrip-Element gefragt, denke ich.

              ja, und deshalb erklärst du "das ist valide, 'funzt' aber nicht", und "das ist nicht valide, 'funzt' aber"?
              finde ich ein wenig suboptimal.

              ein hinweis, ruhig an hand deines beispiel, dass man sowas dann in eine funktion packt, und diese z.b. onLoad aufruft, wäre m.E. hilfreicher gewesen.

              Prinzipell halte ich nichts davon, jemanden Hilfe in dieser Form aufzuzwingen und den Fragenden somit wie dumm aussehen zu lassen (, was wiederum nicht mein Inbegriff von Höflichkeit ist).

              Es gibt auch Ausnahmen, wo Wissenslücken zu groß sind und deutlich erkennbar werden, als das diese einfache mit der ausschließlichen auf die Frage abzielenden Antwort abgedeckt werden würden.

              Dieses sah ich nicht als gegeben und habe zunächst versucht mich direkt an die Frage zuhalten. Da es ein Forum ist, hat jederman im Zweifel über den Inhalt oder die Umsetzung, oder Fehler doch die Möglichkeit nachzufragen, zu berichtigen.

              Gruß aus Berlin!
              eddi