heinetz: Was ist eigentlich genau der Unterschied?

Hallo Forum,

gibt es eigentlich einen Unterschied, ob ich Javascript-Anweisungen direkt im HTML-Code im <head> oder <body>
definieren oder diese in eine externe Datei auslagere ?

beste gruesse,
heinetz

  1. Lieber heinetz,

    gibt es eigentlich einen Unterschied, ob ich Javascript-Anweisungen direkt im HTML-Code im <head> oder <body>
    definieren oder diese in eine externe Datei auslagere ?

    ja. Warum willst Du das wissen?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      ja. Warum willst Du das wissen?

      Weil ich bei einem seit zwei Jahren laufenden TinyMCE(2.x)
      -basierten Eigenbau-CMS gerade mit einem ominösen "Objekt erforderlich" seitens des IE6 konfroniert wurde. Meine
      Interpretation dieser IE-Fehlermeldung war, dass irgendetwas
      noch fertig geladen war. Deshalb habe ich meinen Hang alles
      auszulagern mal grundsätzlich hinterfragt.

      Ich bin mittlerweile dazu gekommen, dass meine Interpretation
      Quatsch sein muss und gehe davon aus, dass dieser Fehler (beim
      Abspeichern des Editorinhalts) garnicht neu ist, sondern ich
      ihn nur nie bemerkt habe und er mir jetzt auffällt.

      meine Lösung sieht jedenfalls so aus, dass ich den Editor
      sowie dessen Einbindung neu machen will. Desahlb frage ich.

      beste gruesse,
      heinetz

      1. -basierten Eigenbau-CMS gerade mit einem ominösen "Objekt erforderlich" seitens des IE6 konfroniert wurde.

        ominös ist richtig, der IE drückt damit alles mögliche aus.

        z.b. kann ist es auch ein Probelm für den IE, wenn die Kodierungen des Quellcodes unterschiedlich ist und du Sonderzeichen im JS Code verwendest.

        Struppi.

  2. gibt es eigentlich einen Unterschied, ob ich Javascript-Anweisungen direkt im HTML-Code im <head> oder <body>
    definieren oder diese in eine externe Datei auslagere ?

    Mehr als einen.
    Versuche selber, die Unterschiede aufzuzählen, die dir selber ohne spezifische JS-Kenntnisse einleuchten sollten.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  3. @@heinetz:

    nuqneH

    gibt es eigentlich einen Unterschied, ob ich Javascript-Anweisungen direkt im HTML-Code im <head> oder <body>
    definieren oder diese in eine externe Datei auslagere ?

    Bzgl. extern oder nicht gilt das in Stylesheet extern oder nicht Gesagte.

    Wo das JavaScript im HTML eingebunden wird, ist für die Performanz der Seite wichtig.

    Und ein Script darf natürlich nicht versuchen auf Elemente zuzugreifen, die noch gar nicht im DOM sind.

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
    1. Hi,

      zunächst mal danke für die Infos!

      Konkrete Frage:

      Wird ein im head definiertes externes Script erst vollständig
      gelesen bevor der Browser "weiterliest". Sprich: Kann ich im
      Body sicher davon ausgehen, dass das Script vollständig
      geladen worden ist?

      beste gruesse,
      heinetz

      1. Wird ein im head definiertes externes Script erst vollständig
        gelesen bevor der Browser "weiterliest". Sprich: Kann ich im
        Body sicher davon ausgehen, dass das Script vollständig
        geladen worden ist?

        Im Gegenteil.
        Du kannst davon ausgehen, dass der body voll vorhanden ist, bevor tatoo.js die Zehennägel lackiert.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Du kannst davon ausgehen, dass der body voll vorhanden ist, bevor tatoo.js die Zehennägel lackiert.

          Ich habe keine Ahnung, was du damit sagen wolltest, aber ja, man kann 100%-ig davon ausgehen, dass ein im head definiertes externes Script vollständig
          gelesen und abgearbeitet ist, bevor der Browser weitere Scripts im Head abarbeitet oder im Body Elemente in den DOM-Tree packt.

          1. @@unknown:

            nuqneH

            man kann 100%-ig davon ausgehen, dass ein im head definiertes externes Script vollständig gelesen und abgearbeitet ist, bevor der Browser weitere Scripts im Head abarbeitet […]

            Ja. Scripte werden in der Reihenfolge ihres Auftretens im Quelltextes abgerbeitet. Ist das zweite eher als das erste fertig geladen, wird es dennoch erst gestartet, nachdem das erste fertig geladen und ausgeführt wurde.

            man kann 100%-ig davon ausgehen, dass ein im head definiertes externes Script vollständig gelesen und abgearbeitet ist, bevor der Browser […] im Body Elemente in den DOM-Tree packt.

            Nein, auf gar keinen Fall. Der Browser ertsellt das DOM unabhängig von JavaScripten im 'head'. Auch deshalb JavaScripte als leztes im 'body' notieren. (Das erspart 'window.onload' und das Warten auf dessen Eintreffen.)

            Qapla'

            --
            Volumen einer Pizza mit Radius z und Dicke a: pi z z a
            1. \//

              Nein, auf gar keinen Fall. Der Browser ertsellt das DOM unabhängig von JavaScripten im 'head'.

              OK, 100%-tig ist es nicht, da habe ich zu hoch gegriffen. Man könnte auch bis zum 1. Script-Tag im body den DOM-Tree schon mal aufbauen.
              Da aber kein mir bekannter Browser dies macht, würde mich mal interessieren, wie du dein "Nein, auf gar keinen Fall" begründest.

              Auch deshalb JavaScripte als leztes im 'body' notieren.

              Scripte als leztes im body entsprechen ja domready und nicht onload. Also der DOM-Tree ist fertig, aber es ist noch nicht alles geladen.

              (Das erspart 'window.onload' und das Warten auf dessen Eintreffen.)

              Was willst du damit sagen?

              Also, man kann das eigentlich weder bejahen nocht verneinen, da es keinen vorgeschriebenen Standard gibt, die gängigen Browser machen es aber so wie weiter oben beschrieben.

              \//

            2. Auch deshalb JavaScripte als leztes im 'body' notieren. (Das erspart 'window.onload' und das Warten auf dessen Eintreffen.)

              Ach, jetzt habe ich dich verstanden, du meinst eigentlich das gleiche wie ich. Scripte als leztes im body müssen nicht erst auf das Laden aller Elemente im body warten.
              Das trifft aber nicht für Scripte zu. Die sind zu diesem Zeitpunkt alle abgearbeitet.