566 votes

Quel est l'équivalent non-jQuery de "$(document).ready()" ?

Quel est l'équivalent non-jQuery de $(document).ready() ?

4 votes

Si vous souhaitez reproduire la méthode jQuery $(document).ready() sans utiliser de bibliothèque, jetez un coup d'œil à ceci : stackoverflow.com/questions/1795089/

5 votes

821voto

Bursos Points 305

Cela fonctionne parfaitement, par l'ECMA

document.addEventListener("DOMContentLoaded", function() {
  // code...
});

L' window.onload ne marche pas égal à JQuery $(document).ready parce que JQuery n'attend que de l'arborescence DOM, tandis que la Vanille JS vérifier tous les éléments, y compris les avoirs extérieurs et des images.

EDIT: Ajout d'IE8 et plus équivalent, grâce à Derk Jan

document.attachEvent("onreadystatechange", function(){
  if (document.readyState === "complete"){
    document.detachEvent( "onreadystatechange", arguments.callee );
    // code ...
  }
});

47voto

naomik Points 10423

Une petite chose, j'ai mis en place

domready.js

(function(exports, d) {
  function domReady(fn, context) {

    function onReady(event) {
      d.removeEventListener("DOMContentLoaded", onReady);
      fn.call(context || exports, event);
    }

    function onReadyIe(event) {
      if (d.readyState === "complete") {
        d.detachEvent("onreadystatechange", onReadyIe);
        fn.call(context || exports, event);
      }
    }

    d.addEventListener && d.addEventListener("DOMContentLoaded", onReady) ||
    d.attachEvent      && d.attachEvent("onreadystatechange", onReadyIe);
  }

  exports.domReady = domReady;
})(window, document);

Comment l'utiliser

<script src="domready.js"></script>
<script>
  domReady(function(event) {
    alert("dom is ready!");
  });
</script>

Vous pouvez également modifier le contexte dans lequel la fonction de rappel s'exécute en passant un second argument

function init(event) {
  alert("check the console");
  this.log(event);
}

domReady(init, console);

34voto

Doug Neiner Points 34940

La bonne chose à propos de $(document).ready() , c'est qu'il se déclenche avant que l' window.onload. La fonction load attend jusqu'à ce que tout est chargé, y compris les avoirs extérieurs et des images. $(document).ready, cependant, se déclenche lorsque l'arbre du DOM est complet et peut être manipulé. Si vous souhaitez réaliser DOM prêt, sans jQuery, vous pouvez vérifier dans cette bibliothèque. Quelqu'un extrait juste le ready partie de jQuery. Sa belle et de petites et vous trouverez peut-être utile:

domready sur Google Code

131 votes

Cela ne répond pas à la question et ne montre pas non plus de code non JQuery. Comment se fait-il qu'il ait reçu autant de votes positifs ?

3 votes

@DanielW. Parce que c'est simple et pratique. La plupart d'entre nous sont venus ici pour chercher un moyen de s'assurer que le DOM est prêt à être utilisé par le code javascript.

19 votes

Oui, mais certains d'entre nous sont venus ici pour obtenir une véritable réponse.

8voto

Brian Campbell Points 101107

En JavaScript pur, sans aucune bibliothèque ? C'est une erreur. $ est simplement un identificateur et est indéfini à moins que vous ne le définissiez.

jQuery définit $ en tant que son propre "objet tout" (également connu sous le nom de jQuery afin que vous puissiez l'utiliser sans conflit avec d'autres bibliothèques). Si vous n'utilisez pas jQuery (ou une autre bibliothèque qui le définit), alors $ ne sera pas défini.

Ou demandez-vous quel est l'équivalent en JavaScript ? Dans ce cas, vous voulez probablement window.onload qui n'est pas exactement équivalent, mais qui est le moyen le plus rapide et le plus simple d'obtenir le même effet en JavaScript vanille.

42 votes

Pour les nombreux détracteurs de cette réponse (et des autres ci-dessous) : lorsque cette question a été posée, elle disait simplement : "Qu'est-ce que $(document).ready() en javascript ? Pas jquery. Qu'est-ce que c'est ?" On aurait dit qu'il demandait ce que cela signifiait en JavaScript classique, sans jQuery chargé. Dans ma réponse, j'ai tenté de répondre à cette question, ainsi que de donner la réponse la plus simple et la plus proche pour le JavaScript vanille sans jQuery ou d'autres bibliothèques, au cas où c'est ce qu'il voulait dire. Notez que tout le contexte supplémentaire a été ajouté par d'autres personnes qui ont deviné ce que la question demandait, et non par l'auteur de l'article.

-1voto

ta.speot.is Points 15157

Je crois que vous voulez window.onload

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X