¿Cuál es el equivalente no jQuery de '$(document).ready()'?

Resuelto TIMEX asked hace 14 años • 9 respuestas

¿ Cuál es el equivalente que no es jQuery $(document).ready()?

TIMEX avatar Feb 21 '10 12:02 TIMEX
Aceptado

Esto funciona perfectamente, de ECMA. El fragmento es todo lo que necesita, pero si desea profundizar más y explorar otras opciones, consulte esta explicación detallada .

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

No window.onloades igual a JQuery $(document).readyporque $(document).readyespera solo hasta el árbol DOM mientras window.onloadverifica todos los elementos, incluidos los recursos externos y las imágenes.

EDITAR : Se agregó IE8 y equivalentes anteriores, gracias a la observación de Jan Derk . Puedes leer la fuente de este código en MDN:

// alternative to DOMContentLoaded
document.onreadystatechange = function () {
    if (document.readyState == "interactive") {
        // Initialize your application or run some code.
    }
}

Hay otras opciones además de "interactive". Consulte los documentos de MDN para obtener más detalles.

sospedra avatar Feb 16 '2014 17:02 sospedra

Una cosita que armé

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);

Cómo usarlo

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

También puede cambiar el contexto en el que se ejecuta la devolución de llamada pasando un segundo argumento.

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

domReady(init, console);
Mulan avatar Aug 29 '2014 01:08 Mulan