Répétition d'un javascript

Bonjour,
je me heurte à un problème de répétition des scripts javascript écrits dans une variable ou un indicateur. Voici un script très simple, inscrit dans une « variable calculée automatiquement » :

var texte = "Ceci est un texte";
console.log(texte);
return(texte);

Ma variable est insérée dans une étape de contenu (le bug est le même lorsque la variable est insérée dans un grain ou une étape de quiz)

  • sur la console du navigateur, je constate que le texte s’affiche deux fois (ça c’est embêtant :frowning: ), ce qui veut dire que le script est appelé 2 fois,
  • sur la page du navigateur, le texte n’est bien affiché qu’une fois (là ça va :slight_smile: )

Cela me gêne dans ce que je développe actuellement, à savoir un script qui génère à la volée un fichier téléchargeable : le navigateur me propose 2 fois le téléchargement !

Si quelqu’un a une idée (j’ai joint une archive qui illustre mon propos) :wink:

Merci !

bugRepet_2022-09-09_11-11-18.scar (2,3 Ko)

Bonjour,

Les variables et les indexes peuvent en effet être recalculés plusieurs fois, il peut y avoir plusieurs raisons à cela, par exemple, leurs intrants peuvent être amenés à évoluer au sein de la même étape.

A la base ils ne sont pas conçus pour interagir directement avec le DOM, Visiblement vous les détournez pour injecter une balise script dans la page.

Vous pouvez :

  • utiliser un « module web distant » dans lequel vous collez votre balise HTML <script/>
  • continuer à détourner la notion de variable mais en vous assurant qu’une partie de votre code ne sera exécuté qu’une seule fois, par exemple comme ceci :
var texte = "Ceci est un texte";
if(!document.myCodeHasRun) {
   console.log("Lancer une seule fois !");
   document.myCodeHasRun = true;
}
console.log(texte);
return(texte);
1 « J'aime »

J’avais effectivement pensé à utiliser la première solution mais qui nécessite d’abandonner les variables et les indicateurs calculés automatiquement, bref de revoir plus ou moins la structure du projet. La seconde solution me séduit beaucoup plus.
Merci beaucoup :+1: