Viele Leute beherrschen bereits die Verwendung von Javascript, aber wenn sie Defer sehen, wissen sie möglicherweise nicht, wofür es verwendet wird. Viele Leute sind auch auf ein solches Problem gestoßen und müssen andere JS direkt ausführen, DOM-Objekte bearbeiten und immer ein Objekt melden Fehler „nicht gefunden“ Wie jeder weiß, liegt der Grund darin, dass die Seite noch nicht geladen wurde und das js-Operationsobjekt noch heruntergeladen wird. Viele Menschen wissen jedoch nicht, dass das Hinzufügen des Defer-Tags dieses Problem leicht lösen kann.
<script src="../CGI-bin/delscript.js" defer></script>
Die Funktion von defer besteht darin, das Skript nach dem Laden des Dokuments auszuführen, um das Problem zu vermeiden, dass das Objekt nicht gefunden wird – ein kleines Problem
Kopieren Sie den Codecode wie folgt:
<button id="myButton" onclick="alert('ok')">test</button>
<Skript>
myButton.click();
</script>
<Skript>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>
<script defer>
Funktion document.body.onload() {
alarm(document.body.offsetHeight);
}
</script>
Das Hinzufügen von defer bedeutet, dass es ausgeführt wird, nachdem die Seite vollständig geladen ist. Dies entspricht window.onload, ist jedoch in der Anwendung flexibler als window.onload!
Defer ist ein „unbesungener Held“ in Sachen Scripting. Es teilt dem Browser mit, dass das Skriptsegment Code enthält, der nicht sofort ausgeführt werden muss, und kann in Verbindung mit dem SRC-Attribut auch dazu führen, dass diese Skripte im Hintergrund heruntergeladen werden und der Inhalt im Vordergrund angezeigt wird dem Benutzer normal angezeigt.
--Aber führen Sie das Skript aus, nachdem das Dokument geladen wurde
Bitte beachten Sie zwei Punkte:
1. Rufen Sie den Befehl „document.write“ nicht in einem Skriptsegment vom Typ „Defer“ auf, da „document.write“ einen direkten Ausgabeeffekt erzeugt.
2. Fügen Sie außerdem keine globalen Variablen oder Funktionen ein, die vom Skript zur sofortigen Ausführung im Verzögerungsskriptsegment verwendet werden sollen.
Eine gängige Methode zur Leistungsoptimierung besteht darin, das „defer“-Attribut im <SCRIPT>-Tag festzulegen, wenn das Skript nicht sofort ausgeführt werden muss. (Das unmittelbare Skript ist nicht in einem Funktionsblock enthalten, daher wird es während des Ladevorgangs ausgeführt.) Nach dem Festlegen des „defer“-Attributs muss IE nicht darauf warten, dass das Skript geladen und ausgeführt wird. Auf diese Weise wird die Seite schneller geladen. Im Allgemeinen bedeutet dies auch, dass unmittelbare Skripte am besten in Funktionsblöcken platziert werden und die Funktion im Onload-Handler des Dokuments oder Body-Objekts abwickeln. Diese Eigenschaft ist nützlich, wenn einige Skripts basierend auf Benutzeraktionen ausgeführt werden müssen, z. B. dem Klicken auf eine Schaltfläche oder dem Bewegen der Maus in einen bestimmten Bereich. Wenn jedoch einige Skripts während oder nach dem Laden der Seite ausgeführt werden müssen, sind die Vorteile der Verwendung des Defer-Attributs nicht groß.
Das Defer-Attribut im Skript ist standardmäßig falsch. Gemäß der Beschreibung im DHTML Programming Guide wird das Defer-Attribut wie folgt geschrieben:
Die Verwendung des Attributs zur Entwurfszeit kann die Download-Leistung einer Seite verbessern, da der Browser das Skript nicht analysieren und ausführen muss und stattdessen mit dem Herunterladen und Parsen der Seite fortfahren kann.
Mit anderen Worten: Wenn Sie beim Schreiben eines Skripts das Defer-Attribut hinzufügen, muss der Browser es beim Herunterladen des Skripts nicht sofort verarbeiten, sondern lädt die Seite weiter herunter und analysiert sie, was die Download-Leistung verbessert.
Es gibt viele solcher Situationen. Wenn Sie beispielsweise viele JavaScript-Variablen definieren oder viele Skripte in die Referenzdatei (.inc) schreiben, die verarbeitet werden müssen, können Sie diesen Skripten auch das Defer-Attribut hinzufügen, was definitiv zur Leistungsverbesserung beiträgt .
Beispiele sind wie folgt:
Kopieren Sie den Codecode wie folgt:
<script language="javascript" defer>
var object = new Object();
....
</script>
Da das Defer-Attribut standardmäßig auf „false“ gesetzt ist, dann hier
<script language="javascript" defer>
Das explizite Deklarieren des Defer-Attributs ist äquivalent zu
<script language="javascript" defer=true>
Nachdem Sie das Defer-Attribut deklariert haben, müssen Sie feststellen, ob andere Variablen auf die Variablen im Defer-Skriptblock verweisen. Andernfalls tritt ein Skriptfehler auf.