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 :

Executer du code javascript dans une var


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut Executer du code javascript dans une var
    Salut,

    J'ai une variable qui contient du code javascript
    (retourné par un script ajax)
    et j'aimerais pouvoir l'exécuter directement.
    Via une commande qui pourrais ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script>
    executeCode(var);
    </script>
     
    avec var = "alert('plop');" par ex ?

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    >>> n'utilise pas "var" comme nom de variable, c'est réservé ^^

    et pour répondre à ta question :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var var1 = "alert('plop');";
    eval(var1);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    C'était pour l'exemple .
    Merci en tout cas pour la réponse, je m'en vais tester ça de suite

  4. #4
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    C'est possible mais c'est une mauvaise pratique. Donnes un peu plus de détails pour qu'on te dise comment te passer de eval(), parce que «eval c'est le mal™»

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    ou plus tordu (mais je l'aime bien )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var code = "alert('coucou')";
    var f = new Function("",code);
     
     
    f(); // exécution de f()

  6. #6
    Membre expérimenté Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Par défaut
    techniquement c'est pas mieux :p

    Function utilise eval();

  7. #7
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut remplacer eval
    Il y a le DOM pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title>remplacer eval</title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <script type="text/javascript">
      var obj = document.createElement("script");
      obj.setAttribute("type", "text/javascript");
      obj.text = "var fn = function() { alert('blah'); };";
      document.getElementsByTagName("body")[0].appendChild(obj);
      fn();
      </script>
    </body>
    </html>

  8. #8
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Par curiosité : quel intérêt de passer par le DOM ici ?

  9. #9
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Ça remplace eval!

    Voici un test de performance, plutôt éloquent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title>remplacer eval</title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <p id="d">dom : </p>
      <p id="e">eval : </p>
     
      <script type="text/javascript">
      var d = document.getElementById("d");
      var e = document.getElementById("e");
     
      var obj = document.createElement("script");
      obj.setAttribute("type", "text/javascript");
      obj.text = "var fn = function() { var j=0; };";
      document.getElementsByTagName("body")[0].appendChild(obj);
     
      var i = 1000;
      var debut = new Date();
      while(i){
        i--;
        fn(i);
      }
      var fin = new Date()
      d.textContent = "dom : "+ (fin - debut) +" ms";
     
      var i = 1000;
      debut = new Date();
      while(i){
        i--;
        eval("var j=0;");
      }
      fin = new Date()
      e.textContent = "eval : "+ (fin - debut) +" ms";
      </script>
    </body>
    </html>

  10. #10
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Oui effectivement je comprends mieux, même si les performances ne m'ont que très rarement fait choisir ou éviter quoi que ce soit, et même si je trouve ça étrange, au final, de créer par le DOM un élément de comportement qui, par définition, ne fait pas vraiment "partie" du document... (et qui plus est : depuis un fragment de code js >>> simuler l'insertion de code html dans la page >>> pour insérer du code js... je trouve ça tordu mais c'est peut-être moi )

    En tout cas merci pour la petite démo

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/04/2014, 15h58
  2. Executer du code contenu dans une variable
    Par Fade2B dans le forum PL/SQL
    Réponses: 6
    Dernier message: 25/11/2009, 17h44
  3. Réponses: 21
    Dernier message: 20/09/2009, 12h10
  4. intégration de code javascript dans une page asp.net
    Par Je-cherche-pfe dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 06/09/2007, 17h10
  5. [MySQL] Execution de code PHP dans une BDD
    Par calenfeaion dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 30/06/2006, 13h34

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