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

-2voto

tnyfst Punkte 1583

Die Funktion ready in jQuery tut eine Reihe von Dingen. Ehrlich gesagt, sehe ich keinen Grund, sie zu ersetzen, es sei denn, Sie haben einen erstaunlich geringen Output von Ihrer Website. jQuery ist eine ziemlich winzige Bibliothek, die alle Arten von Cross-Browser-Dingen handhabt, die Sie später brauchen werden.

Wie auch immer, es hat wenig Sinn, es hier zu posten, öffnen Sie einfach die jQuery und sehen Sie sich die bindReady méthode.

Es beginnt mit dem Aufruf von entweder document.addEventListener("DOMContentLoaded") o document.attachEvent('onreadystatechange') je nach Ereignismodell, und geht von dort aus weiter.

-2voto

Versuchen Sie dies:

function ready(callback){
    if(typeof callback === "function"){
        document.addEventListener("DOMContentLoaded", callback);
        window.addEventListener("load", callback);
    }else{
        throw new Error("Sorry, I can not run this!");
    }
}
ready(function(){
    console.log("It worked!");
});

-4voto

Manan Sheth Punkte 141

Kurz gesagt, anstelle des in jQuery verwendeten $(document).ready() können wir eine JavaScript-Methode verwenden:

<script>
    document.addEventListener("DOMContentLoaded", function_name, false);
    function function_name(){
        statements;
    }
</script>

Erst wenn die Seite fertig ist, d.h. DOMContentLoaded, wird die Funktion function_name() aufgerufen.

-7voto

puchu Punkte 2963

Wenn Sie Folgendes unterstützen möchten Internet Explorer 7+ (keine Macken, Kompatibilität und andere Schmerzen), zuletzt Chrom zuletzt Safari , letzter Firefox und keine iframes - wird dies ausreichen:

is_loaded = false
callbacks = []

loaded = ->
  is_loaded = true
  for i in [0...callbacks.length]
    callbacks[i].call document
  callbacks = []

content_loaded = ->
  document.removeEventListener "DOMContentLoaded", content_loaded, true
  loaded()

state_changed = ->
  if document.readyState is "complete"
    document.detachEvent "onreadystatechange", state_changed
    loaded()

if !!document.addEventListener
  document.addEventListener "DOMContentLoaded", content_loaded, true
else
  document.attachEvent "onreadystatechange", state_changed

dom_ready = (callback) ->
  if is_loaded
    callback.call document
  else
    callbacks.push callback

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