2431 Stimmen

$(document).ready entspricht ohne jQuery

Ich habe ein Skript, das Folgendes verwendet $(document).ready , aber es verwendet nichts anderes von jQuery. Ich möchte es durch Entfernen der jQuery-Abhängigkeit aufhellen.

Wie kann ich meine eigene $(document).ready Funktionalität ohne jQuery zu verwenden? Ich weiß, dass mit window.onload wird nicht dasselbe sein, da window.onload wird ausgelöst, nachdem alle Bilder, Rahmen usw. geladen wurden.

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

42voto

Dustin Davis Punkte 14279

Ich benutze dies:

document.addEventListener("DOMContentLoaded", function(event) { 
    //Do work
});

Hinweis: Dies funktioniert wahrscheinlich nur mit neueren Browsern, insbesondere diesen: http://caniuse.com/#feat=domcontentloaded

35voto

Mikser Punkte 769

Es ist das Jahr 2020 und <script> Tag hat defer Attribut.

zum Beispiel:

<script src="demo_defer.js" defer></script>

gibt an, dass das Skript ausgeführt wird, wenn die Seite fertig geparst ist.

https://www.w3schools.com/tags/att_script_defer.asp

28voto

Greg Punkte 20050

Version 2022

Im Jahr 2022 müssen Sie lediglich Ihr Skript mit dem Attribut "defer" versehen und es in den Kopf laden!

Referenz: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-defer

<!doctype html>
<html>
<head>
  <script src="/script.js" defer></script>
</head>
<body>

 </p>In 2022, all you need to do is put the defer attribute on your script, and load it in the head!</p>

</body>
</html>

23voto

Dan Punkte 51805

Wirklich, wenn Sie sich für Internet Explorer 9+ Nur dieser Code würde ausreichen, um die jQuery.ready :

    document.addEventListener("DOMContentLoaded", callback);

Wenn Sie sich Sorgen machen über Internet Explorer 6 und einigen wirklich seltsamen und seltenen Browsern wird dies funktionieren:

domReady: function (callback) {
    // Mozilla, Opera and WebKit
    if (document.addEventListener) {
        document.addEventListener("DOMContentLoaded", callback, false);
        // If Internet Explorer, the event model is used
    } else if (document.attachEvent) {
        document.attachEvent("onreadystatechange", function() {
            if (document.readyState === "complete" ) {
                callback();
            }
        });
        // A fallback to window.onload, that will always work
    } else {
        var oldOnload = window.onload;
        window.onload = function () {
            oldOnload && oldOnload();
            callback();
        }
    }
},

23voto

chugadie Punkte 2662

Diese Frage wurde schon vor längerer Zeit gestellt. Für alle, die diese Frage erst jetzt sehen, gibt es jetzt eine Website namens "Sie brauchen vielleicht kein Jquery" die alle Funktionen von jquery aufschlüsselt - je nach erforderlicher IE-Unterstützung - und einige alternative, kleinere Bibliotheken bietet.

IE8 Dokument bereit Skript nach Sie brauchen vielleicht kein Jquery

function ready(fn) {
    if (document.readyState != 'loading')
        fn();
    else if (document.addEventListener)
        document.addEventListener('DOMContentLoaded', fn);
    else
        document.attachEvent('onreadystatechange', function() {
            if (document.readyState != 'loading')
                fn();
        });
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X