Hier ist, was ich benutze, es ist schnell und deckt alle Basen ich denke; funktioniert für alles außer IE<9.
(() => { function fn() {
// "On document ready" commands:
console.log(document.readyState);
};
if (document.readyState != 'loading') {fn()}
else {document.addEventListener('DOMContentLoaded', fn)}
})();
Dies scheint alle Fälle zu erfassen:
- wird sofort ausgelöst, wenn das DOM bereits fertig ist (wenn das DOM nicht "lädt", sondern entweder "interaktiv" oder "vollständig" ist)
- wenn das DOM noch geladen wird, wird ein Ereignis-Listener eingerichtet, wenn das DOM verfügbar ist (interaktiv).
Das DOMContentLoaded-Ereignis ist im IE9 und in allen anderen Browsern verfügbar, so dass ich persönlich denke, dass es in Ordnung ist, dieses zu verwenden. Schreiben Sie die Deklaration der Pfeilfunktion in eine reguläre anonyme Funktion um, wenn Sie Ihren Code nicht von ES2015 nach ES5 transpilieren.
Wenn Sie warten möchten, bis alle Elemente geladen sind, alle Bilder angezeigt werden usw., verwenden Sie stattdessen window.onload.
302 Stimmen
...und auch definitiv nicht die gleiche Funktionalität.
46 Stimmen
Als diese Antwort Staaten, wenn alles, was Sie von jQuery wollen, ist
$(document).ready
können Sie dieses Problem leicht lösen, indem Sie Ihren Code ganz unten auf der Seite ausführen, anstatt oben. HTML5Boilerplate verwendet genau diesen Ansatz.5 Stimmen
Warum nicht einfach den DOMContentLoaded verwenden? Es ist IE9+ caniuse.com/domcontentloaded developer.mozilla.org/de-US/docs/Web/Events/DOMContentLoaded
0 Stimmen
Ein Blick lohnt sich: developer.mozilla.org/de-US/docs/Web/API/Document/readyState
0 Stimmen
developer.mozilla.org/de-US/docs/Web/API/Document/