Chargement function dans script src head avec variable
Posté : 12 avr. 2020, 15:13
Bonjour,
Soit un fichier My_Liste.js qui sera à charger selon un emplacement variable (par exemple _Xyz). Il contient une function Liste() contenant un tableau à traiter.
Avec un emplacement connu je charge un script src dans le head du code HTML puis le travaille dans le body sans problème.
Du fait de l'inconnu de cet emplacement je charge ce script en utilisant une variable que je transmets en argument lors l'appel du fichier HTML. (Dans le code joint cette variable est "fixée" pour le test.)
Je pense avoir réussi à coder le chargement du script src via le DOM mais cela ne suffit pas à rendre accessible le contenu du fichier js pour trouver la function Liste().
Message en debug : Liste est inaccessible
Je me trouve confronté au mode de chargement, qu'il soit synchrone ou asynchrone ou non, du fichier HTML sans pouvoir le modifier. De fait l'appel de la function Liste() se fait avant le chargement du fichier js.
Comment procéder en javascript pur ? Merci !
Amitiés à tous,
Code du fichier js contenant un tableau :
Code du fichier HTML d'appel de ce script :
Fichier TestLoad.zip pour test :
PS : Ce codage HTML charge corectement le fichier js mais quelle instruction DOM utiliser à la place du fameux document.write(Data_script) ? :
Fichier TestLoad2.zip pour test :
Soit un fichier My_Liste.js qui sera à charger selon un emplacement variable (par exemple _Xyz). Il contient une function Liste() contenant un tableau à traiter.
Avec un emplacement connu je charge un script src dans le head du code HTML puis le travaille dans le body sans problème.
Du fait de l'inconnu de cet emplacement je charge ce script en utilisant une variable que je transmets en argument lors l'appel du fichier HTML. (Dans le code joint cette variable est "fixée" pour le test.)
Je pense avoir réussi à coder le chargement du script src via le DOM mais cela ne suffit pas à rendre accessible le contenu du fichier js pour trouver la function Liste().
Message en debug : Liste est inaccessible
Je me trouve confronté au mode de chargement, qu'il soit synchrone ou asynchrone ou non, du fichier HTML sans pouvoir le modifier. De fait l'appel de la function Liste() se fait avant le chargement du fichier js.
Comment procéder en javascript pur ? Merci !
Amitiés à tous,
Code du fichier js contenant un tableau :
Code : Tout sélectionner
function Liste() {
// ================================================================================
tabSave[0] = "2003 Epinal/200103010.jpg";
tabSave[1] = "202-10 Epinal/20xxx.txt";
tabSave[2] = "20204-11 Metz/2001zzz.pdf";
// ================================================================================
}
Code : Tout sélectionner
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test 12/04/2020</title>
<!--
<script src="Liste.js"></script>
-->
<script>
// ************************************************************************************************************
// ************************************************************************************************************
Source_Variable = "_Xyz";
function loadError(oError) {
throw new URIError("Le script " + oError.target.src + " n'a pas été chargé correctement.");
}
function Script_Head(url, onloadFunction) {
var My_js = document.createElement("script");
My_js.onerror = loadError;
if (onloadFunction) { My_js.onload = onloadFunction; }
document.head.appendChild(My_js);
My_js.src = url;
// My_js.async = false;
}
My_src = Source_Variable + "/My_Liste.js"
console.log(My_src);
Script_Head(My_src, function () {
alert("Le script " + My_src + " est correctement chargé");
});
// ************************************************************************************************************
// ************************************************************************************************************
</script>
</head>
<body>
<script>
// Charger Liste
tabSave = new Array();
Liste();
console.log(tabSave[2]);
</script>
</body>
</html>
PS : Ce codage HTML charge corectement le fichier js mais quelle instruction DOM utiliser à la place du fameux document.write(Data_script) ? :
Code : Tout sélectionner
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test 12/04/2020</title>
<script>
// ************************************************************************************************************
// ************************************************************************************************************
Source_Variable = "_Xyz";
My_src = Source_Variable + "/My_Liste.js"
var Data_script = '<script src="' + My_src + '"><\/script>';
document.write(Data_script);
// ************************************************************************************************************
// ************************************************************************************************************
</script>
</head>
<body>
<script>
if(typeof (Liste) !== 'function'){
alert("function Liste non Chargée.");
}
if (typeof (Liste) == 'function') {
alert("function Liste Chargée.");
// Charger Liste
tabSave = new Array();
Liste();
console.log(tabSave[2]);
}
</script>
</body>
</html>