Denis Ciccales Version
var DOMReady = function(a, b, c) {
b = document
c = 'addEventListener'
b[c] ? b[c]('DocumentContentLoaded', a) : window.attachEvent('onload', a)
}
DOMReady(function () {
alert('The DOM is Ready!');
});
Minimiert
var DOMReady = function(a,b,c){b=document,c='addEventListener';b[c]?b[c]('DOMContentLoaded',a):window.attachEvent('onload',a)}
Dustin Diaz' Version
function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
Er hatte auch ein Repository dafür, wo der Code etwas anders ist (und neuer aussieht), also möchten Sie vielleicht das ausprobieren, obwohl ich das oben genannte als ziemlich effektiv an sich gefunden habe. Seine 0.3.0-Branch ist für IE 6-7-8 erforderlich.
Die native DOM-Funktion ist
document.addEventListener('DOMContentLoaded', function() {
});
Falls Sie damit einverstanden sind, nur Browser zu unterstützen, die das unterstützen.
Keine dieser Versionen sollte verwendet werden, mit Ausnahme von Dustin Diaz' Version.
DOMContentLoadedist ein Ereignis, das einmal stattfindet. Wenn Sie also eine Funktion *nachdem* das Ereignis ausgelöst wurde, anhängen, wird die Funktion nicht aufgerufen – d.h. die Website könnte kaputt gehen.Dies ist besonders problematisch bei asynchron geladenen Skripten (
async-Attribut oder andere Methoden)Ich verwende bloody-domready, da es in einer bestimmten Situation (automatisches Neuladen in IE10) das einzige war, das bei mir funktionierte.
Super :D Danke
Ich benutze die folgende Lösung für browserübergreifendes DOM Ready. Sie ist so abwärtskompatibel wie alles andere, was ich bisher gesehen habe, und kürzer als die obigen (beide, ausgenommen die Dustin Diaz-Version, die sehr raffiniert ist und die ich jetzt verstehen möchte).
document.onreadystatechange = function () { if (document.readyState == ‘complete’) { /* wird ausgeführt, nachdem das DOM bereit ist */ } };