2010-09-16 9 views
1

Lorsque nous insérons dynamiquement JS spript dans la tête, cela provoque le déblocage (ou le parallélisme avec d'autres ressources) du téléchargement du fichier JS. Une fois que le JS est téléchargé, le navigateur se bloque-t-il en analysant et en exécutant le script ou l'analyse et l'exécution est également asynchrone?Ajout dynamique de JS à la tête

var headID = document.getElementsByTagName("head")[0];   
var newScript = document.createElement('script'); 
newScript.type = 'text/javascript'; 
newScript.src = 'http://www.somedomain.com/somescript.js'; 
headID.appendChild(newScript); 

Répondre

2

Ce qui suit se passe dans l'ordre:

1.) script se charge
2.) script est Interpretation d'(blocs javascript de fil)
3.) Charge de script/événement se déclenche complet. JavaScript est un seul thread, l'interprétation et l'exécution vont bloquer d'autres scripts. Cela bloquera également le rendu DOM. Le seul avantage de l'ajout dynamique de scripts est d'empêcher le chargement du script de bloquer le rendu DOM.

1

Seul le téléchargement se fait en parallèle. Comme mentionné par @BGerrissen, JavaScript est single threaded. L'interprétation et l'exécution bloqueront le fil de l'interface utilisateur.