Lire et executer un fichier .js avec Jquery

Résolu/Fermé
bobred - 14 mars 2022 à 14:54
 bobred - 14 mars 2022 à 22:57
Bonjour
je regarde jquery car je n'arrive pas à trouver une solution avec javascript.
Je voudrais pouvoir tourner les mêmes programmes html avec des données différentes.
l'inclusion par <script type="text/JavaScript" src="photo1.js"></script>
n'acceptant pas de variable, il faut dupliquer les programmes par autant de copies qu'il y a de ces fichiers. Ces données sont des gros tableaux dans des fichiers.js . Mis tous les 4 c'est "too big". Tous du genre:
photo= new Array
photo[1]='tonton jean_1955_mariage Paul , au restaurant _ derriere lui sa belle mère'
photo[2]="tonton jean_1958_avec son copain d'armée au carnaval de nice"
etc...
Donc comment lire, charger et executer ces tableaux javascript dans le suite du programme html
en utilisant jquery et $.getScript ??? J'ai essayé sans succés le code ci-dessous:
qu'est ce que je n'ai pas bien codé ? Cette approche est-elle envisageable?
Peut-on s'assurer que tout le tableau sera chargé avant que le programme appelant ne continue son chargement ?
la variable " lequel" de l'instruction $.getscript contient 1, 2 ,3 ou 4 selon les photos que je veux utiliser,
mon code (je n'ai jamais utilisé jQuery avant)
<script src="jquery-3.6.0.min.js"></script>
<script>
lequel = window.prompt('entrer le numéro du dossier', 1);
$.getScript( "photo"+lequel+".js", function( contenu ) {
console.log( contenu );
});
alert(photo[2]) // uniquement pour tester
document.write('<br><img src="''+photo[2]+'.jpg">)
</script>

resultat dans le log console:
Uncaught ReferenceError: photo is not defined
at nom_du_programme.html:26:10
observing
content.js:52311 action frameLoad
nom_du_programme.html:14 photo = new Array;
photo[1]='tonton jean_1955_mariage Paul........
photo[2]="tonton jean_1958_avec son.......

donc:Il trouve bien les données mais ne les met pas immédiatement à disposition dans le javascript
D'avance mille mercis
PS: c'est volontairement que je n'utilise pas php et mysql pour que
cette suite de programmes fonctionne sous n'importe quel PC/window à partir d'un support amovible, sans "additifs" de logiciels
A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 14 mars 2022 à 15:28
Bonjour,

Pour commencer, à l'avenir, merci de poster tes codes en utilisant les balises de code.
Explications ( à lire entièrement ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, en pure JS .. tu peux utiliser un code du genre
var script = document.createElement('script'); // on créé une balise script
script.onload = function (){
  // une fois que le script est chargé dans la page.. faire quelque chose
   // par exemple ton console.log
};
script.src = "tonscript.js"; // ici le chemin vers ton fichier js

document.head.appendChild(script); //on ajoute la balise script dans le head de ta page html


0
Merci Jordane
vous avez resolu mon probleme
Cordialement
0
Salut,
euh JQuery c'est du JavaScript.

Une bibliothèque de codes/fonctions écrites en JavaScript.
Donc ce qui est fait avec JQuery c'est du JavaScript.

"Donc comment lire, charger et executer ces tableaux javascript dans le suite du programme html "

Toute variable(Array en JavaScript est un "type" de variables) présente dans le code est présente sur la page.
S'il y a beaucoup de données et que cela peut surcharger la mémoire(il en faudra vraiment beaucoup quand même) il faudra alors fonctionner différemment par exemple avec une base de données(donc oublier JavaScript) et du AJAX(pour traiter les données avec JS).


Un script par image? Plutôt faire un script et utiliser une variable pour l'image si le traitement doit être identique.

function traiterImage(image){
//fait quelque chose

}


Mais bon sinon on peut intégrer autant de scripts que l'on veut et un script peut faire la taille que l'on veut, donc regrouper vos scripts dans un seul fichier.
Bien sûr cela à un impact(le poids comme par exemple ajouter JQuery) sur le temps de chargement(d'où l'utilité de onLoad pour s'assurer que tout est chargé avant de commencer les traitements).


"PS: c'est volontairement que je n'utilise pas php et mysql pour que "
Oui cela à ses avantages mais aussi (et surtout) des inconvénients.
Entre autres : un traitement local et une difficulté à utiliser et plus généralement conserver l'intégrité des données. Parce qu'une base de données ce n'est qu'un fichier de texte avec un langage de programmation qui permet de faire des opérations pour obtenir/classer/regrouper les données que l'on veut et donc ne pas avoir à lire toutes les données mais seulement celles dont on a besoin au moment où on en a besoin.

"support amovible, sans "additifs" de logiciels "
Sans connexion Internet vous voulez dire. Parce que JavaScript est bien un ajout à du HTML.
Il se fait en local et est intégré à la plupart des navigateurs si toutefois l'utilisateur ne l'interdit pas mais c'est bien une couche logicielle en plus du HTML comme l'est CSS.
C'est dans le principe même du concept: l'hypertexte = relier un fichier à un autre.
Si vous n'avez pas l'obligation d'être en local (sans connexion au réseau Internet) il n'existe aucun cas où avoir une base de données est moins pratique, sécuritaire et fera un meilleur programme.

A vous de voir, je vous avertit des risques(complications, non intégrité/perte des données, localisation et mise en commun impossible ou par des astuces foireuses et pas maintenables = programme médiocre et qui va pas durer) surtout si vous avez beaucoup de données ce ne sera pas fonctionnel dans la durée votre système(et nécessitera beaucoup de travail inutile pour l'être).

Voir aussi la conception/analyse de votre système d'informations.
0
je suis vraiment désolé que vous ayez passé tant de temps pour rien, à ne pas répondre à la question et à vous égarer sur mes non problèmes
puisque vous m'avez averti des risques "foireux"; a mon tour de vous donner un conseil : lisez attentivement les questions , d'avance merci pour vos futurs lecteurs
cordialement
0