Wird inline / block Javascript vor der Dokumentbereitstellung ausgeführt?

8

Angenommen, Sie haben JavaScript-Code in einem HTML-Dokument (z. B. dem Textkörper) eingebettet, wird dieser Teil von JavaScript immer vor dem dokumentbereiten JQuery-Code ausgeführt?

Zum Beispiel ist der folgende Safe?

%Vor%

Wenn nicht, wie kann ich sicherstellen, dass myVar in einem Inline / Block-Code definiert ist?

    
JVerstry 18.05.2013, 12:50
quelle

3 Antworten

10

Ja, der obige Code ist sicher. Inline-JS wird so ausgeführt, wie es auftritt, während das Dokument von oben nach unten analysiert wird. Der Dokument-bereit-Handler wird ausgeführt, wenn das Dokument bereit ist (offensichtlich), und es ist nicht bereit, bis das gesamte Dokument einschließlich Inline-Skripten analysiert wurde.

Beachten Sie, dass Sie einen Dokument-ready-Handler nicht wirklich brauchen, wenn Sie den Code, der als letztes in den Dokumentkörper eingefügt wird, einbinden, da zu diesem Zeitpunkt nicht nur andere inline-JS ausgeführt werden, sondern alle Dokumentelemente wird dem DOM hinzugefügt und ist somit von JS aus zugänglich.

    
nnnnnn 18.05.2013, 12:54
quelle
7

Ja, Inline-JavaScript wird ausgeführt, während der HTML-Code analysiert wird.

Das ist sicher, solange Sie nicht versuchen, einen Verweis auf ein DOM-Element zu erhalten, das noch nicht geparst wurde (d. h. ein beliebiges Element nach dem Skriptblock im HTML-Quellcode). Sie können auch auf alle Variablen verweisen, die in früheren Skriptblöcken definiert wurden (solange sie sich im Gültigkeitsbereich befinden).

Und wie Matt Browne in seinem Kommentar darauf hingewiesen hat, ist es im Allgemeinen auch sicher, keinen DOMContentLoaded-Listener (oder die oilIE-Problemumgehung oder window.onload) zu verwenden, wenn Sie Ihr Skript direkt vor dem Laden des DOM platzieren Schließen von </body> -Tag. Zu diesem Zeitpunkt sind alle HTML-Elemente bereits im DOM vorhanden (es sei denn, Sie haben nach </body> weitere Elemente, was ein ungültiger HTML-Code wäre).

    
bfavaretto 18.05.2013 12:54
quelle
1

Es ist sicher anzunehmen, dass myVAr von $(document).ready(function() {}) aus zugänglich ist.

Wenn Sie den Code in Ihrem HTML ausführen, wird myVar zu einer Eigenschaft des globalen Objekts window JS (d. h. window.myVar ). Ich denke nicht, dass es notwendig ist, es lokal in der jQuery-Funktion zu erstellen.

    
edu 18.05.2013 13:25
quelle