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?
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.
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).
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.
Tags und Links javascript html jquery document-ready