Comportement d'événement Javascript bizarre - Javascript/Node.js - Programmation
Marsh Posté le 25-09-2023 à 20:05:45
Aucune erreur dans la console ?
Je pensais (bêtement ^^) que ptet titi.js était parfois appelé avant toto.js...
Dans le doute tu devrais peut être tout mettre "encapsulé" dans des onload pour être sur que tout est là.
Après ça reste du bricolage, je suis sur que y'a une meilleur façon de faire.
Marsh Posté le 25-09-2023 à 21:03:20
Non, pas de msg d'erreur dans la console. Ce qui est étonnant, c'est que lorsque ça fonctionne bien, le console.log() que j'ai mis après l'instruction document.dispatchEvent(MonEvent); dans Toto.js s'affiche APRES le console.log() qui est dans document.addEventListener("MonScriptReady", function(event) {...});
Pourtant, je trouvais que c'était une bonne idée d'utiliser un Event pour synchroniser mes 2 scripts. Y'a un truc que j'ai pas dû bien comprendre...
Marsh Posté le 28-09-2023 à 06:00:16
Vu que tu dis que c'est au chargement, y a effectivement de bonnes chances pour que le dispatch soit fait avant que le listener ne s'y soit abonné.
Tu contrôles comment le démarrage de l'exécution, tu as une sorte de readyState / load / DOMContentLoaded ou machin du même genre ?
Tu n'as qu'un émetteur et un gestionnaire, pas d'abonnement multiple avec des cancel ?
Marsh Posté le 28-09-2023 à 08:35:55
est ce qu'i lest possible que l'event listener soit exécuté après que l'event ait été dispatched ?
en général, je fais un un event dispatcher + une variable globale pour faire ça
Marsh Posté le 28-09-2023 à 09:33:05
Effectivement, ça pourrait être une piste le fait que le dispatch soit exécuté avant que le event listener soit mis en place. Je vais tester.
Là, j'ai trouvé une façon de faire qui marche pas mal : je fais un "include" du fichier qui contient la fonction que j'appelais sur le listener et dans le JS qui faisait le dispatch, je check si la fonction existe (donc que le include a bien été fait). Si oui, je l'exécute.
Marsh Posté le 28-09-2023 à 18:04:10
Bon, je viens de tester avec une structure du genre :
Code :
|
Et dans MonScriptLoad() je fais le traitement + le dispatchEvent().
Dans dans le script qui attend l'event :
Code :
|
Ca a l'air de fonctionner
Marsh Posté le 25-09-2023 à 17:39:21
Bonjour,
Dans Mediawiki, on peut ajouter dans l'espace de nom "Mediawiki:" des Javascript (ex : "Mediawiki:MonScript.js" ). Ils sont exécutés lors du chargement de la page.
Pour synchroniser 2 scripts, je passe par un événement perso. Dans mon script Toto.js, j'ai mis :
Dans mon 2ème script Titi.js, je veux démarrer son exécution quand Toto.js a terminé. J'ai donc mis :
Ca marche de temps en temps mais pas systématiquement. Je ne comprends pas pourquoi. Est-ce que c'est mon code JS qui pose souci ?
Merci par avance pour votre aide
Message édité par rufo le 25-09-2023 à 17:39:56
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta