Manchmal ist es notwendig, ein Skript über Ajax zu laden, aber dokumentenbereit zu verzögern, bis das Skript geladen ist.
jQuery unterstützt dies mit der holdReady()
-Funktion.
Beispiel Verwendung:
$.holdReady(true); // Halten einstellen
function releaseHold() { $.holdReady(false); } // Rückruf zum Freigeben
$.getScript('script.js', releaseHold); // Skript laden und dann Halten freigeben
Das tatsächliche Laden des Skripts erfolgt asynchron (kein Fehler), aber der Effekt ist synchron, wenn der restliche JavaScript nach dokumentenbereit ausgeführt wird.
Dieses fortgeschrittene Feature würde normalerweise von dynamischen Skript-Ladern verwendet, die zusätzliches JavaScript wie jQuery-Plugins laden möchten, bevor sie das Bereit-Ereignis zulassen, auch wenn das DOM bereits bereit ist.
Dokumentation:
https://api.jquery.com/jquery.holdready
UPDATE 7. Januar 2019
Von JQMIGRATE:
jQuery.holdReady() ist veraltet
Ursache: Die jQuery.holdReady()
-Methode wurde aufgrund ihrer nachteiligen Auswirkungen auf die globale Leistung der Seite veraltet. Diese Methode kann verhindern, dass der gesamte Code auf der Seite über längere Zeiträume initialisiert wird.
Lösung: Die Seite so umschreiben, dass nicht alle jQuery-Bereit-Handler verzögert werden müssen. Dies könnte beispielsweise erreicht werden, indem nur der Code spät geladen wird, der die Verzögerung erfordert, wenn es sicher ist, ihn auszuführen. Aufgrund der Komplexität dieser Methode versucht jQuery Migrate nicht, die Funktionalität zu übernehmen. Wenn die zugrunde liegende Version von jQuery, die mit jQuery Migrate verwendet wird, jQuery.holdReady()
nicht mehr enthält, wird der Code kurz nach dem Erscheinen dieser Warnung fehlschlagen.