Esto no es una pregunta de codificación real, más que una afirmación del mundo real.
He anteriormente noted que DOMReady
eventos son lentos, muy lentos. Por lo tanto, al navegar por la fuente jQuery noté que el evento jQuery domeready se puede activar usando $.ready()
. Entonces pensé, colocando este sencillo script de ejecución justo antes de cerrar el cuerpo debería disparar a todos los oyentes "onDomReady" que estaban adjuntos previamente. Y sí, funciona como se esperaba:
<script>$.ready()</script>
</body>
Éstos son dos ejemplos, éste mide el ms gastado a la espera de domready:
Como se puede ver, el gatillo domready es muy de forma nativa lento, el usuario tiene que esperar para un conjunto 200-300 milisegundos antes del inicio de la escritura domready en
de todos modos, si colocamos $.ready()
justo antes de cerrar la etiqueta BODY
obtenemos la siguiente:.
ver la diferencia? Al activarlo manualmente, podemos cortar 100-300 ms de retraso de ejecución. Este es un gran negocio, porque podemos confiar en jQuery para que se encargue de las manipulaciones DOM antes de que las veamos.
Ahora, a una pregunta, nunca he visto esto siendo recomendado o discutido antes, pero todavía parece ser un problema de rendimiento importante. Todo se trata de optimizar el código en sí, lo cual es bueno, por supuesto, pero es en vano si la ejecución se demora tanto tiempo que el usuario ve un "flash of" unjQueryedContent ".
Alguna idea de por qué esto es no discutido/recomendado con más frecuencia?
Todo lo que puedo decir es impresionante. ¡Espero que a nadie se le ocurra una buena razón para no hacer esto! –
¿está listo el dom en IE antes de que el cuerpo esté cerrado? – Ibu
@Ibu sí, el DOM está listo cuando el cierre de 'cuerpo' ocurre en todos los navegadores que conozco. Aunque, tengo mucha curiosidad por encontrar un caso de uso cuando este no es el caso ... – David