Dans IE6 / 7, JavaScript entravera le rendu de la page à partir de deux aspects:
Les ressources de la page Web sous la balise de script cesseront de demander et de télécharger avant le chargement du script.
L'élément HTML sous la balise de script arrêtera le rendu avant le chargement du script.
Dans IE6 / 7 Firefox2 / 3 Safari3 Chrome1 et Opera, les balises de script entraveront le téléchargement:
Bien que le script puisse être concurrent sous IE8, Safari4 et Chrome2, il entrave toujours le téléchargement d'autres ressources:
Il existe 6 façons de télécharger le script en parallèle avec d'autres ressources:
1.XHR EVAL - Téléchargez le script via XHR (objet XMLHTTPRequest), puis utilisez la méthode EVAL pour exécuter ResponseTeT de XHR
2.xhr Injection - Téléchargez le script via XHR, puis créez une balise de script et insérez-la dans le document (corps ou balise de tête), puis définissez l'attribut de texte de la balise de script à la valeur de ResponseText de XHR
3.xhr dans iframe - Mettez la balise de script dans un iframe et téléchargez-le via l'IFRAME
4.Script Dom Element - Créez une balise de script et pointez son attribut SRC à votre adresse de script
5.Script Defer - Ajoutez l'attribut de différence de la balise de script. Ceci n'est valable que dans IE, mais Firefox3.1 prend également en charge cet attribut.
6. Utilisez la méthode Document.Write pour écrire <script src = ""> Dans la page, ce n'est valide que dans IE.
Vous pouvez afficher les exemples d'utilisation de chaque méthode par cuzillion.
S'il y a des scripts en ligne qui doivent être exécutés après l'exécution des scripts externes, ils doivent être synchronisés. Appelé «couplage», couplage des scripts asynchrones, cet article présente certaines méthodes qui peuvent actuellement implémenter le «couplage».
Headjs, peut permettre à JS de télécharger simultanément (mais exécuter séquentiellement): http://headjs.com/
La copie de code est la suivante:
head.js ("/ path / to / jquery.js", "/google/analytics.js", "/js/site.js", function () {
// tout fait
});
// le cas le plus simple. Chargez et exécutez un script unique sans blocage.
head.js ("/ path / vers / file.js");
// Chargez un script et exécutez une fonction après avoir été chargé
head.js ("/ path / to / file.js", function () {
});
// Chargez des fichiers en parallèle mais exécutez-les en séquence
head.js ("file1.js", "file2.js", ... "filen.js");
// Exécuter la fonction après que tous les scripts ont été chargés
head.js ("file1.js", "file2.js", fonction () {
});
// Les fichiers sont chargés en parallèle et exécutés afin qu'ils arrivent
head.js ("file1.js");
head.js ("file2.js");
head.js ("file3.js");
// Le précédent peut également être écrit comme
head.js ("file1.js"). js ("file1.js"). js ("file3.js");