En IE6/7, JavaScript obstaculizará la representación de la página desde dos aspectos:
Los recursos de la página web en la etiqueta de script dejarán de solicitar y descargar antes de que se cargue el script.
El elemento HTML en la etiqueta de script dejará de reproducir antes de cargar el script.
En IE6/7 Firefox2/3 Safari3 Chrome1 y Opera, las etiquetas de script obstaculizarán la descarga:
Aunque el script puede ser concurrente bajo IE8, Safari4 y Chrome2, aún obstaculiza la descarga de otros recursos:
Hay 6 formas de descargar script en paralelo con otros recursos:
1.xhr eval: descargue el script a través de xhr (objeto xmlhttprequest), y luego use el método eval para ejecutar el respirado de XHR
2.xhr inyección: descargue el script a través de XHR, luego cree una etiqueta de script e insértela en el documento (etiqueta de cuerpo o cabeza), y luego configure el atributo de texto de la etiqueta de script en el valor del respuestas de XHR.
3.xhr en iframe: coloque la etiqueta de script en un iframe y descargla a través del iframe
4.Script DOM Elemento: cree una etiqueta de script y apunte su atributo SRC a su dirección de script
5.Script Difer: Agregue el atributo de diferir de la etiqueta de script. Esto solo es válido en IE, pero Firefox3.1 también admite este atributo.
6. Use el método Docum.Write para escribir <script src = ""> En la página, esto solo es válido en IE.
Puede ver los ejemplos de uso de cada método a través de cuzillion.
Si hay algunos scripts en línea que deben ejecutarse después de ejecutar scripts externos, deben sincronizarse. Llamado "acoplamiento", acoplamiento de scripts asíncronos Este artículo presenta algunos métodos que actualmente pueden implementar "acoplamiento".
Headjs, puede habilitar JS para descargar simultáneamente (pero ejecutar secuencialmente): http://headjs.com/
La copia del código es la siguiente:
head.js ("/path/to/jQuery.js", "/google/analytics.js", "/js/site.js", function () {
// Todo hecho
});
// El caso más simple. Cargue y ejecute un solo script sin bloquear.
head.js ("/path/to/file.js");
// Cargar un script y ejecutar una función después de que se haya cargado
head.js ("/path/to/file.js", function () {
});
// Cargar archivos en paralelo pero ejecutarlos en secuencia
head.js ("file1.js", "file2.js", ... "filen.js");
// ejecutar la función después de que todos los scripts se hayan cargado
head.js ("file1.js", "file2.js", function () {
});
// Los archivos se cargan en paralelo y se ejecutan para llegar
head.js ("file1.js");
head.js ("file2.js");
head.js ("file3.js");
// El anterior también se puede escribir como
head.js ("file1.js"). js ("file1.js"). js ("file3.js");