IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment appeller une fonction dynamiquement, à partir d'un argument


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Comment appeller une fonction dynamiquement, à partir d'un argument
    Bonjour à vous

    Je bloque sur un bout de script, d'ailleur je me demande si c'est réalisable en javascript.

    Pour faire simple, j'ai une fonction xxxxxxxx('nomfonction') et j'aimerais que cette fonction une fois lancée puisse appelée nomfonction(); sachant que nomfonction est bien entendu dynamique

    Un petit exemple pour que sa soit plus clair.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function afficher(nom_fonction) {
        document.getElementById('test').innerHTML="Script lancé";
        // -> ICI je veux appeller la fonction dont le nom est passé en argumant par 'nom_fonction', soit ici texte1() ou texte2();
    }
    
        function texte1() { document.getElementById('test2').innerHTML="salut toi !"; }
        function texte2() { document.getElementById('test2').innerHTML="Au revoir toi !"; }
        
    <a href="#" OnClick="afficher('texte1')"> --> Doit afficher Script lancé/salut toi ! <-- </a>
    <a href="#" OnClick="afficher('texte2')"> --> Doit afficher Script lancé/Au revoir toi ! <-- </a>
    Merci de m'éclairer sur ce point !
    Dernière modification par Invité ; 23/04/2006 à 16h47.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    salut !

    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(nom_fonction + "()");
    mais fait gaffe... c'est pas tip top qd mm

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci sa marche parfaitement.

    Pourrais tu m'en dire plus sur le 'mais fait gaffe... c'est pas tip top qd mm' : Sécurité ? Compatibilité ? Bonnes habitudes ?

    J'en est besoin pour fignoler une fonction ajax que je compte réutiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function ajaxGetA(fichier, nom_fonction) 
    {
            if (window.XMLHttpRequest) requete = new XMLHttpRequest();
            else if (window.ActiveXObject) requete = new ActiveXObject("Microsoft.XMLHTTP");
            requete.open('get',fichier,true);
            requete.send(null);
     
            requete.onreadystatechange = function()  { 
                    if(requete.readyState == 4 && requete.responseText != "")
                    {                
                        eval(nom_fonction + "('"+requete.responseText+"')");
                    } 
            }
    }
    Avant j'en utilisé une plus simple où je n'avais pas ce problème mais je me suis rendu compte que la lancé en synchrone (false) et que c'était pas super.

    J'ai essayer d'avoir à peu prés l'équivalent avec le mode asynchrone.
    Dans mon ancienne, la fonction ajaxGet retourné le contenu envoyé par le fichier PHP, mais je ne suis pas arrivé à le faire avec la nouvelle ajaxGetA.

    Pour info j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function ajaxGet(fichier)
    {
        if(window.XMLHttpRequest) // FIREFOX
            xhr_object = new XMLHttpRequest();
        else if(window.ActiveXObject) // IE
            xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        else
            return(false);
     
        xhr_object.open("GET", fichier, false);
        xhr_object.send(null);
        if(xhr_object.readyState == 4) return(xhr_object.responseText);
        else return(false);
    }

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    par c'est pas tip top, je veux dire niveau sécurité (et par là même bonnes habitudes ) en effet, avec un système comme ça, on peut faire faire exécuté à peu près n'importe quoi à ton script, en même temps ça reste du JavaScript donc en théorie limité au client qui l'exécute ^^

    pour ton problème AJAX, d'après le tuto de DVP.com, il te faut spécifier la fonction de onreadystatechange avant de faire le open et le send : http://siddh.developpez.com/articles/ajax/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah merci je l'ai déplacé avant car sa me paraissait plus logique mais c'est vrai qu'en y réfléchissant mieux j'avais tort

    Sinon je pense que nivo sécu sa ira, car de toute facon une personne qui voudrais exécuter un script jvs de mon site peut le faire de 40000 autres manières, et sa ne peut pas être trés grave.

    Merci pour ces réponces

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/05/2011, 09h27
  2. comment appeler une fonction JAVA en JAVASCRIPT ?
    Par heleneh dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 13/09/2005, 12h21
  3. comment appeler une fonction JAVA en JAVASCRIPT ?
    Par heleneh dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/09/2005, 12h04
  4. Comment appeler une fonction JavaScript depuis Delphi ?
    Par Alfred12 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 17/06/2005, 18h15
  5. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo