Charger des fichiers JavaScript dynamiquement
Concept et utilisation
La fonction loadScript() permet de charger des scripts dans une page web et d'optimiser le chargement de la page.
Elle créée une balise script avec une URL et des attributs spécifiés en arguments et insère le script dans le document lorsqu'il est prêt. Une fois l'insertion effectuée, elle peut exécuter une fonction de rappel.
Fonction
loadScript()Créée une balise
scriptet l'insère dans le document.- Syntaxe
loadScript(url, options);- Paramètres
url(String)Le paramètre
urlde la fonctionloadScript()définit le chemin du fichier JavaScript à insérer dans la page.options(Object)Le paramètre
optionsde la fonctionloadScript()définit l'insertion de la balisescript.- Propriétés
parentTag(String)La propriété
parentTagdu paramètreoptionsdéfinit le sélecteur de balise du document HTML dans laquelle insérer le script.attributes(Object)La propriété
attributesdu paramètreoptionsdéfinit les attributs à appliquer à la balise script avant son insertion.callback(Object)La propriété
callbackdu paramètreoptionsdéfinit une fonction de rappel à exécuter après l'insertion du script dans la page.
Exemple de chargement dynamique de fichier JavaScript
var url = 'https://code.jquery.com/jquery-3.3.1.min.js';
var options = {
parentTag: document.body,
attributes: {
integrity: 'sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=',
crossorigin: 'anonymous'
},
callback: function() {
alert('jQuery téléchargé');
}
};
loadScript(url, options);Code source de la fonction
(function(d){"use strict";window.loadScript=function(u,o){o=o||{};
var e=!1,a=o.attributes||{},s=d.createElement("script"),
t=o.parentTag||d.getElementsByTagName('head')[0];
s.src=u;var q=d.querySelector('script[nonce]');
if(q){s.setAttribute('nonce',q.nonce);}if(Object.keys(a).length>0){
for(var k in a){s.setAttribute(k,a[k]);}}if(typeof o.callback==='function'){
s.onload=s.onreadystatechange=function(){
if(!e&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){
e=!0;o.callback();s.onload=s.onreadystatechange=null;}};}
t.appendChild(s);}})(document);Dernière mise à jour le .
