[Javascript] Importer un fichier js

Résolu/Fermé
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 - Modifié par electroking le 19/10/2016 à 14:05
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 - 21 oct. 2016 à 09:58
Salut,
je souhaiterais, à partir d'une liste du type:

liste = [
'fonction1',
'fonction2'
];


pouvoir importer ou relier a la page html le fichier

fichierUrl = liste[i] + '.js';


pour exécuter la fonction

nomFonction = liste[i] + 'Main()';


qui se trouve à l'intérieur depuis ma page HTML (qui est déjà chargée).

J'ai essayé de placer une balise

<script src="fichierUrl "></script>


sauf que comme je la place APRES le chargement de la page et l'exécution du début du script, il ne la reconnait pas.

Uncaught ReferenceError: historyMain is not defined
(anonymous function)


Comment pourrais-je m'y prendre ?

Cordialement,
Faure Lucas.
A voir également:

2 réponses

codeurh24 Messages postés 761 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
19 oct. 2016 à 19:22
Bonsoir.
Tu as l'air de confondre fonction et fichier js.

donc que représente pour toi fonction1.js ?
0
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 6
20 oct. 2016 à 20:00
Non, je ne confond pas ^^

fonction1.js est un fichier contenant la fonction fonction1Main()
0
Utilisateur anonyme
20 oct. 2016 à 22:13
Bonjour

Il y a bien le problème d'attendre que le script soit chargé avant d'appeler la fonction qu'il contient, mais il y en a un autre que tu ne sembles pas avoir vu.

Dans
<script src="fichierUrl "></script>
, fichierUrl est bel et bien une l'URL "fichierUrl ", pas la variable javascript fichierUrl que tu as défini ailleurs. C'est la valeur d'un attribut(src) d'une balise HTML. Les variables javascript n'existent que dans le code javascript, et une balise HTML, même la balise <script>, n'est pas du code javascript.

Pour obtenir l'effet que tu désires, il faudrait qu'en javascript tu viennes affecter ta variable fichierUrl à l'attribut src d'une balise <script>.
Ça peut être fait en manipulant le DOM ou avec un document.write, par exemple.
Ensuite, il faut que tu appelles ta fonction dans le "onload" de cette même balise.
Ça a l'air un peu laborieux, mais pas infaisable. Je regarde ce que ça peut donner et je reviens.
0
Utilisateur anonyme
20 oct. 2016 à 23:04
<body>
<div>div1 pour voir</div>

<script type= "text/javascript">

var liste = [
 'fonction1',
 'fonction2'
];
var i=0;
var lt=String.fromCharCode(60);
fichierUrl = liste[i] + '.js';
nomFonction = liste[i] + 'Main()';

document.write('<script src=' + fichierUrl +' onload="' + nomFonction + ';">'+lt+'/script>');

</script>

<div>div2 pour voir</div>

  </body>

Ça lance bien, selon que i vaut 0 ou 1, la fonction fonction1Main de fonction1.js, ou la fonction fonction2Main de fonction2.js
Pas très propre, mais ça marche.
0
electroking Messages postés 234 Date d'inscription dimanche 14 septembre 2014 Statut Membre Dernière intervention 22 juin 2021 6
Modifié par electroking le 21/10/2016 à 10:00
Merciiiiiiiiii je t'aime toi
en fait contrairement a ce que ce qui ont lus ce message ont du penser j'ai bien compris les système de fichiers et de fonctions ^^ je voulais obtenir ce résultat là en fait :

<body>

<div id="links"></div>

<script type= "text/javascript">
var liste = [
 'fonction1',
 'fonction2'
];
var i=0;
for (i; i<liste.length; i++) {
 var lt=String.fromCharCode(60);
 fichierUrl = liste[i] + '.js';
 nomFonction = liste[i] + 'Main()';
 
 document.write('<script src=' + fichierUrl +'>'+lt+'/script>');
 document.getElementById('links').innerHTML = document.getElementById('links').innerHTML + '<br /><a href="javascript: ' + nomFonction + ';" rel="nofollow noopener noreferrer" target="_blank">' + nomFonction + '</a>';
}
</script>

</body>


Je me suis seulement très mal exprimé :/
0