2011-04-26 8 views
8

Suponiendo que ambos enfoques carguen el script correctamente, y que espere la cantidad de tiempo adecuada antes de usar el script (y/o uso de una devolución de llamada), ¿qué son las principales diferencias entre estos enfoques.jQuery getScript() vs document.createElement ('script')

Nota: Entiendo que el primero use jQuery (que es una descarga más grande, etc.). Lo que realmente me interesa es el efecto posterior de estos enfoques. ¿Uno coloca el script en un ámbito diferente al otro? Etc.

jQuery:

function loadScript() { 
    $.getScript('http://www.mydomain/myscript.js'); 
} 

Al añadir al cuerpo:

function loadScript() { 
    var script= document.createElement('script'); 
    script.type= 'text/javascript'; 
    script.src= 'http://www.mydomain/myscript.js'; 
    script.async = true; 
    document.body.appendChild(script); 
} 

Al añadir a la cabeza:

function loadScript() { 
    var head= document.getElementsByTagName('head')[0]; 
    var script= document.createElement('script'); 
    script.type= 'text/javascript'; 
    script.src= 'http://www.mydomain/myscript.js'; 
    script.async = true; 
    head.appendChild(script); 
} 
+1

¿hay alguna manera de javascript puro para detectar cuándo se carga la secuencia de comandos? Quiero decir que la función 'jQuery.getScript()' tiene una devolución de llamada ... ¿hay algo similar en javascript? –

+0

Oh, solo pensé un poco en eso ... tal vez ''? ¿Qué piensan chicos? –

+0

me encantaría saber esto también ... –

Respuesta

3

jQuery añade el elemento script a head si está presente, o para document elemento ot herwise Debajo del capó the code is similar. El resultado final será el mismo: ambos enfoques ejecutan código nuevo en el ámbito global.

+0

gracias, mi documento tendrá una 'cabeza', por lo que se agregará jQuery. entonces surge la pregunta: ¿hay alguna diferencia entre agregar el código al 'head' frente al' body' como mi ejemplo del medio? – bebeastie

+13

jQuery solo agrega una etiqueta

1

la documentación al método Jquery dice:

carga un archivo JavaScript desde el servidor mediante una petición HTTP GET, a continuación, ejecutarlo.

Eso significa que el javascript importado se invocará directamente después de una carga exitosa.

Anexado al encabezado: Significa que el navegador agrega la secuencia de comandos como último hijo y ejecuta el contenido (es lo mismo si agrega la etiqueta manuelly al final de la etiqueta de encabezado). Agregado al cuerpo: Significa que el navegador agrega la etiqueta de secuencia de comandos como último elemento secundario de la etiqueta de cuerpo y ejecuta ese contenido (es lo mismo si agrega la etiqueta manuelly al final de la etiqueta de cuerpo).

0

Vale la pena mencionar que la función getScript de jQuery inhabilita el almacenamiento en caché de forma predeterminada, lo que significa que los navegadores descargarán el script cada vez que se solicite la página (ver respuesta anterior here). Su función loadScript, por otro lado, debería aprovechar el almacenamiento en caché.