Bonjour,
Je fais une application pour le travail qui utilise JavaScript. Je dois charger un certain nombre de variables contenant des données à tracer (c'est-à-dire des arrays qui contiennent les points abscisses et ordonnées).
J'ai vraiment beaucoup de variables et je ne peux pas charger tout d'un coup car ça fait planter le navigateur. Donc j'ai enregistré une variable par fichier (fichiers qui ont le même nom que la variable qu'ils contiennent).
Dans cette application il y a une interface HTML pour sélectionner les courbes que l'on va tracer (et donc les variables que l'on va charger). Ainsi on ne charge que ce dont on a besoin.
Pour ça j'utilise le script :
où la variable q.toLoad contient le nom des fichiers à charger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for (var i=0;i<q.toLoad.length;i++) { var script=document.createElement("script"); script.type="text/javascript"; script.src="./Variables/"+q.toLoad[i]; document.getElementsByTagName("head")[0].appendChild(script); }
Donc une fois que les fichier sont chargés avec cette fonction, on peut tracer les courbes.
Le problème c'est que s'il y a trop de fichiers, ça met trop de temps à charger, et au moment de tracer, toutes les variables ne sont pas chargées.
Pour essayer de résoudre le problème, j'ai fais un setTimeout sur la fonction qui trace, mais ce n'est pas super...
Si par exemple j'ai qu'une courbe à charger, ça va se faire rapidement, donc un setTimeout de 10 secondes serait beaucoup trop.
Donc j'ai essayé de faire une boucle while sur l'existence des variables :
Mais logiquement ça plante au niveau du eval(q.toLoad[wait]) puisque la variable n'est pas définie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var wait=0; while (wait<q.toLoad.length) { if (typeof(eval(q.toLoad[wait]))!="undefined") { wait++; } }
Est-ce qu'il y aurait un moyen de vérifier qu'un script (ou variable ici) est chargé et attendre que tout soit chargé pour exécuter la suite ?
Merci.
Partager