Wenn man JavaScript in ein HTML-Dokument einbettet, wo ist der richtige Platz für die <script>
-Tags und das enthaltene JavaScript? Ich meine mich zu erinnern, dass man sie nicht in den "head"-Abschnitt einfügen sollte, aber auch die Platzierung am Anfang des "body"-Abschnitts ist schlecht, da das JavaScript geparst werden muss, bevor die Seite vollständig gerendert wird (oder so ähnlich). Dies scheint das Ende des <body>
-Abschnitts als logischen Platz für <script>
-Tags übrig zu lassen.
Also, wo ist der richtige Platz für die <script>
-Tags?
(Diese Frage bezieht sich auf diese Frage, in der vorgeschlagen wurde, dass JavaScript-Funktionsaufrufe von <a>
-Tags zu <script>
-Tags verschoben werden sollten. Ich verwende speziell jQuery, aber allgemeinere Antworten sind auch angebracht).
Kurz vor dem abschließenden Body-Tag, wie unter
http://developer.yahoo.com/performance/rules.html#js_bottom
Skripte am Ende einfügen
Das Problem, das durch Skripte verursacht wird, ist, dass sie parallele Downloads blockieren. Die HTTP/1.1-Spezifikation sieht vor, dass Browser nicht mehr als zwei Komponenten pro Hostname parallel herunterladen. Wenn Sie Ihre Bilder von mehreren Hostnamen aus bereitstellen, können Sie erreichen, dass mehr als zwei Downloads parallel stattfinden. Während ein Skript heruntergeladen wird, startet der Browser jedoch keine weiteren Downloads, auch nicht unter anderen Hostnamen.
Wenn Sie JQuery verwenden, setzen Sie das Javascript dort ein, wo Sie es am besten finden, und verwenden Sie $(document).ready()
, um sicherzustellen, dass die Dinge ordnungsgemäß geladen werden, bevor irgendwelche Funktionen ausgeführt werden.
Nebenbei bemerkt: Ich mag es, wenn alle meine Skript-Tags im <head>
-Abschnitt stehen, da dies der sauberste Platz zu sein scheint.
Die herkömmliche (und weithin akzeptierte) Antwort lautet "ganz unten", denn dann wird das gesamte DOM geladen, bevor irgendetwas ausgeführt werden kann.
Es gibt aus verschiedenen Gründen Gegenstimmen, angefangen bei der gängigen Praxis, die Ausführung absichtlich mit einem Onload-Ereignis der Seite zu beginnen.