2012-10-09 19 views
5

Después de leer sobre el atributo defer en mdnatributo [diferir] Javascript y document.ready?

Este atributo booleano se establece para indicar a un navegador que el guión está destinado a ser ejecutado después de que el documento ha sido analizada.

Se ve bien.

así que he tested contra $(function() { }); y $(window).load(...)

<script> 
$(function() 
{ 
    alert('1') 
}); 
$(window).load(function() 
{ 
    alert('2') 
}); 
</script> 

<script defer="defer"> 
    alert('4'); 
</script> 

Este código Siempre salida 4,1,2!

Ok Así que ahora puedo reconocer la hora en que se analiza el documento.

¿En qué escenario necesitaré la etapa antes de document.ready (donde se completa el tiempo de análisis)?

+5

@downvoter por favor explique. –

+1

Una advertencia importante: '" Dado que esta característica aún no ha sido implementada por todos los otros navegadores principales, los autores no deben suponer que la ejecución del script se aplazará realmente. " – jbabey

+1

@jbabey yah Lo sé. pero tenga en cuenta que ** ES ** se implementará en todos los aspectos importantes. así que vale la pena aprender sobre su comportamiento :-) –

Respuesta

3

De MDN

El atributo Defer no debe utilizarse en scripts que no tienen el atributo src

El uso real sería que usted todavía puede tener secuencias de comandos en el en la parte superior de la página y hacer que el navegador los cargue después de que toda la página se haya analizado por completo, mejorando así el rendimiento del lado del cliente.

De YSlow

El atributo DEFER indica que la secuencia de comandos no contiene document.write, y es una pista para los navegadores que puedan continuar representación

+0

¿por qué no ponerlos en la parte inferior? cuál es la diferencia ? –

+0

@RoyiNamir, para algunos sistemas de plantillas/CMS, la persona que escribe JavaScript no tiene acceso a la plantilla HTML. Además, simplifica la organización de los metadatos si gran parte de ella se deja en el '' y '' es estrictamente el contenido. – zzzzBov

1

Mira la W3 HTML spec:

Los atributos async y defer son atributos booleanos que indicar cómo se debe ejecutar el script. Los atributos diferir y asincrónico no se deben especificar si el atributo src no está presente.

Por lo tanto, este atributo sólo es válido para scripts externos.

+0

sí. buen punto. Podría hacer referencia a un archivo js que incluye el comando de alerta. fue solo por muestra. y por supuesto, ¡tienes razón! –

+0

Sí, debes hacer eso para realmente probar el comportamiento – Bergi

Cuestiones relacionadas