Wie falsch ist es, das Skript-Tag nach dem schließenden Tag des body ( </body>
) zu platzieren. ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
javascript
html
DanC
quelle
quelle
Antworten:
Es wird nicht außerhalb der Tags oder validiert . Es macht auch keinen großen Unterschied - es sei denn, Sie führen DOM-Manipulationen durch, die den IE beschädigen könnten , bevor das Body-Element vollständig geladen ist -, es kurz vor dem Schließen zu platzieren .
<body>
<head>
</body>
quelle
<script src="..." defer>
, was in allen gängigen Browsern funktioniert (allerdings mit einem potenziell fehlerhaften Fehler in IE9 und niedriger).Ja. Nach dem End-Tag für den Body sind nur Kommentare und das End-Tag für das HTML-Element zulässig.
Browser führen möglicherweise eine Fehlerbehebung durch, aber Sie sollten sich niemals darauf verlassen.
quelle
Wie Andy sagte, wird das Dokument nicht gültig sein, aber das Skript wird trotzdem interpretiert. Siehe das Snippet aus WebKit zum Beispiel:
quelle
IE erlaubt dies nicht mehr (seit Version 10, glaube ich) und wird solche Skripte ignorieren. FF und Chrome tolerieren sie immer noch, aber es besteht die Möglichkeit, dass sie dies eines Tages als nicht standardmäßig fallen lassen.
quelle
Das prozedurale Einfügen von "Elementskript" nach "Elementkörper" ist "Analysefehler" gemäß dem von W3C empfohlenen Prozess . Erstellen Sie in "Tree Construction" einen Fehler und führen Sie "tokenize again" aus, um diesen Inhalt zu verarbeiten. Es ist also wie ein zusätzlicher Schritt. Nur dann kann "Script Execution" ausgeführt werden - siehe Schema-Prozess .
Technisch gesehen ist es per Browser ein interner Prozess, wie sie ihn markieren und optimieren.
Ich hoffe ich habe jemandem geholfen.
quelle
Ja. Aber wenn Sie den Code außerhalb hinzufügen, ist dies höchstwahrscheinlich nicht das Ende der Welt, da die meisten Browser ihn beheben werden, aber es ist immer noch eine schlechte Praxis, sich darauf einzulassen.
quelle
Google empfiehlt dies tatsächlich im Hinblick auf die "CSS-Optimierung". Sie empfehlen, kritische Stile über dem Falz einzulegen und den Rest (CSS-Datei) aufzuschieben.
Beispiel:
Siehe: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
quelle
body
Elements platzieren. Dieser Google-Artikel rät niemandem, so etwas zu tun.Moderne Browser nehmen Skript-Tags wie folgt in den Text auf:
Grundsätzlich bedeutet dies, dass das Skript geladen wird, sobald die Seite fertig ist, was in bestimmten Fällen nützlich sein kann (nämlich DOM-Manipulation). Ich empfehle jedoch dringend, dass Sie dasselbe Skript verwenden und es mit "defer" in das Head-Tag einfügen, da es den gleichen Effekt erzielt.
quelle
script
Tags einevent
Attribut hätten, das definiert werden könnte, um zu bestimmen, wann das Skript analysiert werden soll. Sie müssen alsoevent="load" event="DOMContentLoaded"
das Skript ausführen, nachdem das DOM erstellt wurde oderevent="beforeunload"
auf dem Fensterereignisbeforeunload
. Beispiel ,<script src="scripts/main.js" event="DOMContentLoaded"></script>
.