¿Cuál es el equivalente de no jQuery de $(document).ready()
?
javascript
jquery
TIMEX
fuente
fuente
$(document).ready()
evento de jQuery sin usar ninguna biblioteca, eche un vistazo a esto: stackoverflow.com/questions/1795089/…$(document).ready()
- books.google.com/… . También utiliza laaddEvent
abstracción de enlace de eventos escrita por Dean Edwards, cuyo código también está en el libro :)Respuestas:
Lo bueno de esto
$(document).ready()
es que dispara anteswindow.onload
. La función de carga espera hasta que todo se carga, incluidos los activos externos y las imágenes.$(document).ready
, sin embargo, se dispara cuando el árbol DOM está completo y puede manipularse. Si desea obtener DOM listo, sin jQuery, puede registrarse en esta biblioteca. Alguien extrajo solo laready
parte de jQuery. Es agradable y pequeño y puede que te resulte útil:domready en Google Code
fuente
Esto funciona perfectamente, de ECMA
El
window.onload
no es igual a JQuery$(document).ready
porque$(document).ready
solo espera al árbol DOM mientraswindow.onload
verifica todos los elementos, incluidos los activos externos y las imágenes.EDITAR : Se agregó IE8 y su equivalente anterior, gracias a la observación de Jan Derk . Puede leer la fuente de este código en MDN en este enlace :
Hay otras opciones aparte de
"interactive"
. Vea el enlace de MDN para más detalles.fuente
document.addEventListener("DOMContentLoaded",function(){console.log(123)})
pruébalo ahoraUna cosita que armé
domready.js
Cómo usarlo
También puede cambiar el contexto en el que se ejecuta la devolución de llamada pasando un segundo argumento
fuente
Ahora que es 2018, aquí hay un método rápido y simple.
Esto agregará un detector de eventos, pero si ya se activó, comprobaremos que el dom esté listo o que esté completo. Esto puede activarse antes o después de que los recursos secundarios hayan terminado de cargarse (imágenes, hojas de estilo, marcos, etc.).
Lecturas adicionales
Actualizar
Aquí hay algunos ayudantes de utilidad rápida que usan ES6 Import & Export estándar que escribí que también incluyen TypeScript. Tal vez pueda hacer que estos sean una biblioteca rápida que se pueda instalar en proyectos como una dependencia.
JavaScript
Mecanografiado
Promesas
fuente
De acuerdo con http://youmightnotneedjquery.com/#ready, un buen reemplazo que todavía funciona con IE8 es
mejoras : Personalmente, también verificaría si el tipo de
fn
es una función. Y como @elliottregan sugirió eliminar el detector de eventos después de su uso.La razón por la que respondo esta pregunta tarde es porque estaba buscando esta respuesta pero no pude encontrarla aquí. Y creo que esta es la mejor solución.
fuente
Hay un reemplazo basado en estándares, DOMContentLoaded , que es compatible con más del 90% de los navegadores, pero no con IE8 (por lo tanto, el siguiente código lo usa JQuery para el soporte del navegador) :
Función nativa de jQuery es mucho más complicada que solo window.onload, como se muestra a continuación.
fuente
DOMContentLoaded
yload
eventos usandoaddEventListener
, y lo primero que el fuego eliminar los dos detectores, por lo que no se activan dos veces.En JavaScript simple, sin bibliotecas? Es un error
$
es simplemente un identificador y no está definido a menos que lo defina.jQuery define
$
como su propio "objeto todo" (también conocido comojQuery
para que pueda usarlo sin entrar en conflicto con otras bibliotecas). Si no está utilizando jQuery (o alguna otra biblioteca que lo defina),$
no se definirá.¿O pregunta cuál es el equivalente en JavaScript simple? En ese caso, probablemente desee
window.onload
, que no es exactamente equivalente, pero es la forma más rápida y fácil de acercarse al mismo efecto en JavaScript de vainilla.fuente
La forma más fácil en los navegadores recientes sería utilizar los GlobalEventHandlers apropiados , onDOMContentLoaded , onload , onloadeddata (...)
El evento DOMContentLoaded se activa cuando el documento HTML inicial se ha cargado y analizado por completo, sin esperar a que las hojas de estilo, las imágenes y los subtramas finalicen la carga. Se debe usar una carga de evento muy diferente solo para detectar una página completamente cargada. Es un error increíblemente popular usar load donde DOMContentLoaded sería mucho más apropiado, así que tenga cuidado.
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
La función utilizada es un IIFE, muy útil en este caso, ya que se activa cuando está listo:
https://en.wikipedia.org/wiki/Immediately-invoked_function_expression
Obviamente, es más apropiado colocarlo al final de cualquier script.
En ES6, también podemos escribirlo como una función de flecha:
Lo mejor es usar los elementos DOM, podemos esperar a que cualquier variable esté lista, que desencadenará un IIFE con flecha.
El comportamiento será el mismo, pero con menos impacto en la memoria.
En muchos casos, el objeto del documento también se activa cuando está listo , al menos en mi navegador. La sintaxis es muy buena, pero necesita más pruebas sobre compatibilidades.
fuente
El cuerpo onLoad también podría ser una alternativa:
fuente