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 :

Modifier dynamiquement un script


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 63
    Par défaut Modifier dynamiquement un script
    Bonjour,

    J'aurai besoin d'une balise <script> que je doit modifier selon les entrées des utilisateurs.
    J'ai essayé avec cette exemple pour tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var head1 = document.getElementsByTagName("head")[0];         
    var Script1 = document.createElement('script');	
    Script1.type = 'text/javascript';
    //Script1.src = 'CodeJS/conversion-distance/conversion-distance.js';
    //Script1.innerHTML = 'function fvar(x) {return(5*x);}' ;
    Script1.textContent = 'function fvar(x) {return(5*x);}' ;
    head1.appendChild(Script1);
    alert(fvar(5));
    Script1.textContent = 'function fvar(x) {return(10*x);}' ;		
    alert(fvar(5));
    Le problème, c'est que la modification du contenu de Script1 n'est pas pris en compte, c'est la premier contenu qui est utilisé. Est ce qu'il y a moyen de mettre à jour le contenu de l'élément Script ?.
    J'ai essayé aussi avec la suppression et l'ajout d'un node, mais I.E n'est pas à l'aise avec appendchild..

    C'est quoi la meilleur façon de procéder à votre avis

    Merci d'avance

  2. #2
    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
    bonsoir,

    Citation Envoyé par yassinbean Voir le message
    J'aurai besoin d'une balise <script> que je doit modifier selon les entrées des utilisateurs.
    peux-tu préciser ton idée ?

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 63
    Par défaut
    Sans abuser de l'utilisation de eval() !

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 63
    Par défaut
    C'est pour calculer par exemple f(x) , f est la fonction que va entrer l'utilisateur

  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
    un petit exemple, sans eval() :

    Code javascript : 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
     
    function clic()
    {
    	var t = document.getElementById("strFct");
    	var balise;
    	var code;
    	var idx;
     
     
    	balise  = document.createElement("script");
    	balise.type = "text/javascript";
    	code = t.value;
    	balise.innerHTML = code;
     
    	document.getElementById("bscript").appendChild(balise);
     
    	idx = code.indexOf("{");
    	code = code.substring(9, idx);
     
    	document.getElementById("fct").innerHTML = "<input type='button' value='Exécuter fonction' onclick='" + code + "'/>";
     
     
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <textarea id="strFct" style="width:200px; height:100px">function plop(){
    x=3;
    alert(x+5);
    }</textarea>
    <br/>
    <input type="button" onclick="clic()" value="Valider" />
    </br>
     
    <div id="fct"></div>
     
    <div id="bscript"></div>

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    @auteur

    Pourquoi n'utilise-tu pas simplement eval ?

    Si c'est par soucis de sécurité, ta proposition n'est pas plus sure.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2005, 09h52
  2. Modifier dynamiquement le style d'un textarea
    Par AlLutun dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2004, 15h18
  3. Réponses: 7
    Dernier message: 25/10/2004, 10h59
  4. [Applet] Modifier dynamiquement la mise en page
    Par Amnesiak dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/09/2004, 11h49
  5. VertexBuffer d'un Mesh modifiable dynamiquement ?
    Par Imhotep dans le forum DirectX
    Réponses: 7
    Dernier message: 10/07/2004, 15h23

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