Mon problème est tout simple :
Je cherche à exécuter une fonction Javascript, en provenance d'un script Javascript (sur lequel je n'ai "pas la main").
Or, pour être sûr que la fonction est bien executée, j'ai été obligé de faire un try catch en boucle jusqu'à ce que soit executé mon script (appel de fonction).
Existe-t-il une solution "propre" en Javascript, pour gérer le chargement de script tiers et ainsi lancer des appels aux fonctions contenues dans ce script ?
Merci d'avance
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Et sinon, au lieu de faire un try catch, tu teste la présence de la fonction désirée.
( function {
function wait( ) {
if ( typeof taFonction !== "undefined" ) {
/* ton code */
} else {
window.setTimeout( wait, 1000 );//si c'est urgent, tu mets moins de 1000ms
}
}
wait( ):
}( ) );
Et je crois qu'on peut mettre un onload sur les éléments script.
Je suis un peu une bille en Javascript.
Du coup ma question pourra sembler "conne"
Voici ce que je comprends de ton script :
Je crée une fonction "anonyme".
Dedans je crée la fonction wait() :
Si ma fonction "taFonction" n'est pas undefined, alors je fais mon appel
Sinon j'attends 1000 millisecondes
Je sors de la fonction wait()
Et je rappelle la fonction wait()
Cela signifie que si je passe dans le if() il faut que je mette une instruction pour sortir de la fonction wait(), sinon elle va être rappellée en boucle, non ?
J'ai bien tout capté ?
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
J'ai la flemme d'essayer de comprendre ce que tu racontes...
Fais ton code et je te dirais si c'est bon.
C'est pas bien compliqué, tu replaces /* ton code */ par tes instructions...
Je suis un peu une bille en Javascript.
Du coup ma question pourra sembler "conne"
Voici ce que je comprends de ton script :
Je crée une fonction "anonyme".
Dedans je crée la fonction wait() :
Si ma fonction "taFonction" n'est pas undefined, alors je fais mon appel
Sinon j'attends 1000 millisecondes
Je sors de la fonction wait()
Et je rappelle la fonction wait()
Cela signifie que si je passe dans le if() il faut que je mette une instruction pour sortir de la fonction wait(), sinon elle va être rappellée en boucle, non ?
J'ai bien tout capté ?
Tu crées une fonction anonyme, que tu exécuteras immédiatement (cf les parenthèses () ligne 10). On appelle ça une closure, c'est juste une astuce pour ne pas polluer l'espace global.
Tu crées une fonction wait qui teste l'existence de la fonction. Si la fonction n'existe pas, la fonction wait sera relancée après 1000ms.
Waye
Je pensais que ce que tu décrivais, c'est comment s'en servir...
C'est tellement rare les gens qui essayent de comprendre le code qu'on leur donne :/
Je pense que t'as juste un loupé dans la compréhension du setTimeout.
Citation
Sinon j'attends 1000 millisecondes
Je sors de la fonction wait()
Et je rappelle la fonction wait()
En fait, tu dis à l'ordinateur "lance cette fonction dans 1000 milli-secondes"
puis tu sors de wait()
puis il se passe plus rien, le processeur s'occupe d'autre chose
puis au bout de 1000ms (ou plus), on recommence car la fonction est appelée
Ah ben oui, en effet, mon but était d'être bien sûr d'avoir compris le code proposé
Et en effet, je n'avais pas capté le fonctionnement du setTimeOut()
Je suis une buse en JS Je pense que ça s'est vu.
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
J'ai posté pour dépanner un collègue qui se demandait comment faire les choses proprement.
Mais bon, la syntaxe proposée par xavierm02 est un peu hasardeuse, notamment autour du typeof me semble-t-il...Donc, j'attends confirmation de mon collègue
En tout cas, merci à vous pour vos réponses.
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
if ( taFonction != undefined ) {
//ou
if ( taFonction ) {
renvoieront une erreur... ReferenceError: aze is not defined
Il faudrait que ta fonction soit déclarée avec var avant pour éviter ce bug... mais pourquoi le faire ?
typeof permet d'éviter ce bug car il renvoie "undefined" pour les variable non initialisées et les variables non déclarées.
Reste le === alors qu'un == aurait suffit. === est plus rapide et évite les problèmes au niveau de la conversion automatique des types. Même si le problème de la conversion ne se pose pas dans ce cas, il faut quand même mieux l'utiliser.
Et merci à toi xavierm02, pour le code et pour les explications !
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Execution d'un script JS
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)