¿Ya es necesario $ (document).?

111

Vi esta pregunta en stackoverflow pero no siento que haya sido respondida en absoluto.

Es $(document).readynecesario?

Vinculo todos mis javascripts en la parte inferior de la página, por lo que, en teoría, todos se están ejecutando después de que el documento esté listo de todos modos.

Joshua Robison
fuente
3
Es posible que los navegadores más antiguos no disfruten de la descarga paralela que emplean los navegadores más nuevos. Ese es el razonamiento principal de que sus scripts se colocan al final. Específicamente, permite que su HTML y CSS se procesen primero en navegadores más antiguos. En este punto, tiene que elegir cómo desea lograr la detección de que el DOM está cargado. Dos métodos populares para iniciar su js son window.onload & $ (document) .ready (junto con jQuery). Hay otras opciones y desventajas obvias de window.onload fáciles de buscar. El punto es $ (documento) .ready funciona la mayoría de las veces y es fácil de usar.
BradChesney79

Respuestas:

125

Es $(document).readynecesario?

No

si ha colocado todos sus scripts justo antes de la </body>etiqueta de cierre, ha hecho exactamente lo mismo.

Además, si el script no necesita acceder al DOM, no importará dónde se cargue más allá de las posibles dependencias de otros scripts.

Para muchos CMS, no tiene muchas opciones de dónde se cargan los scripts, por lo que es una buena forma para que el código modular use el document.readyevento. ¿Realmente desea volver atrás y depurar el código antiguo si lo reutiliza en otro lugar?

sin relación:

Como nota al margen: debe usar en jQuery(function($){...});lugar de $(document).ready(function(){...});como fuerza al alias $.

zzzzBov
fuente
¿Estás seguro de que es "exactamente lo mismo"? Tenía la impresión de que es posible que su css (u otro código cargado en paralelo con el html principal) aún no se haya analizado por completo.
Zach Lysobey
6
@ZachL, el documento puede estar listo antes de que CSS esté completamente analizado. document.ready no es el mismo que el onloadevento, donde las imágenes y otros activos externos han terminado de cargarse.
zzzzBov
Gracias por la aclaración.
Zach Lysobey
5
Este "no" solo me costó 3 horas de trabajo ... solo asegúrate de no confundir </body> con <body> :)
teejay
1
Sin embargo, no estoy necesariamente de acuerdo con forzar el alias, especialmente si noConflict()es necesario usarlo por alguna razón.
Jay Blanchard
22

No, si su javascript es lo último antes de cerrar, no necesitará agregar esas etiquetas.

Como nota al margen, una abreviatura de $ (document) .ready es el código a continuación.

$(function() {
// do something on document ready
});

Esta pregunta puede ser buena. ¿Lo leíste? jQuery: ¿Por qué usar document.ready si JS externo está en la parte inferior de la página?

palillo de tortuga
fuente
6
La pregunta es esencialmente "¿Es necesario que el documento esté listo cuando coloco mis scripts en la parte inferior del cuerpo?", No "¿Existe un método abreviado para escribir? $(document).ready()".
nnnnnn
4

No, no es necesario siempre que sepa que no está sucediendo ningún asunto diferido y, en la mayoría de los casos, sabrá si ha desarrollado lo que está trabajando de arriba a abajo.

- Es cuando traes el código de otra persona, sin auditarlo a fondo, que no sabes.

Entonces, pregúntese si está utilizando un marco o editor que le ayude con la estructura. ¿Está introduciendo el código de otra persona y no se ha molestado en leer cada archivo? ¿Está preparado para pasar por la matriz del sistema operativo, el navegador y la versión del navegador para probar su código? ¿ Necesita exprimir cada gramo de velocidad de su código?

document.ready () hace que muchas de esas preguntas se vuelvan irrelevantes. document.ready () fue diseñado para hacerle la vida más fácil. Se trata de un pequeño (y me atrevería a decir aceptable) éxito de rendimiento.

BradChesney79
fuente
Solo algo que vi: una de tus ediciones fue rechazada, pero me parece bien. Es posible que desee volver a enviarlo: stackoverflow.com/review/suggested-edits/3224385
Qantas 94 Heavy
1

He visto referencias / publicaciones de blog en Internet sobre el uso de jquery's document.ready. En mi opinión, tanto usarlo como poner todo su javascript al final de la página son válidos. Y ahora la pregunta sería ¿cuál sería mejor? Es solo una cuestión de estilo de programación.

Krishna Chytanya
fuente
0

No, no es necesario. Puede poner la etiqueta de script justo antes de la etiqueta de cierre del cuerpo o, si es compatible con IE9 +, puede usar JS nativo.

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
mbokil
fuente