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 :

[DOM] comment insérer du code dynamiquement


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut [DOM] comment insérer du code dynamiquement
    salut !!

    j'aimerais insérer du code dynamiquement dans mon site web, aidée de javascript En l'occurrence c'est un element SCRIPT.

    Ca marche très bien avec Frirefox, mais mal avec Internet explorer..
    Voici le code qui ne marche pas, et que j'ai énormement simplifié. Il est donc totalement absurde.
    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
     
    <html>
    	<head>
    		<SCRIPT type="text/javascript">
    			window.onload = function() {
    				var elem = document.getElementById("kala");
    				var code = "<SCRIPT id='nouveau' >coucou les amis</ SCRIPT>";
    				elem.innerHTML = code;
    				var e = document.getElementById("nouveau");
    				alert(e);
    			}
    		</SCRIPT>
     
    	</head>
    	<body>
    		<div id="kala"></div>
    	</body>
    </html>

    Avec internet explorer, le programme affiche 'null', alors qu'il est censé récupérer l'élément nouvellement inséré par l'assignation de .innerHTML.

    Une petite remarque! si j'ajoute un morceau de code qui définis un élément DIV au lieu d'un élément SCRIPT, ca a l'air de marcher.

    Mon but ici (incomprehensible dans ce code simplifié!), est de charger une page avec ajax. Mais étant donné que quand on charge une page ajax et qu'on l'integre dynamiquement avec innerHTML dans la page courante, les elements scripts ne s'executent pas. J'essaye donc, une fois la page ajax chargée, récupérer son element de script, et l'évaluer avec une fonction "eval". Je precise bien que ma solution marche avec Firefox, mais pas avec Internet explorer..

    voila voila


    Bon, si quelqu'un entrevois une once se piste qui puisse me donner la moindre idée, n'hésitez po

    a+++,
    Camille

  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
    bonjour,

    Une balise script doit contenir du code javascript. IE n'apprécie pas "coucou les amis" (même si le message est très aimable) car ce n'est pas du code JS

    Quant à Firefox, s'il affiche le message c'est qu'il doit supprimer les balises script. Regarde dans l'arborescence de ta page dans l'inspecteur DOM : Outils->Inspecteur DOM.

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Citation Envoyé par Auteur Voir le message
    bonjour,

    Une balise script doit contenir du code javascript. IE n'apprécie pas "coucou les amis" (même si le message est très aimable) car ce n'est pas du code JS

    Quant à Firefox, s'il affiche le message c'est qu'il doit supprimer les balises script. Regarde dans l'arborescence de ta page dans l'inspecteur DOM : Outils->Inspecteur DOM.
    ah eum oui effectivement pour le "coucou les amis".. Mais ca marche pas non plus avec du code javascript, du vrais .. Il ne peux juste pas récupérer l'élément, qu'il aie du vrais code javascript à l'intérieur ou non avec Internet explorer.

    Avec Firefox ca marche sans problème

  4. #4
    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
    Chez moi ça ne marche ni avec l'un ni avec l'autre
    Montre moi ton script.


    Sinon tu peux définir dynamiquement les fonctions qui seront appelées lors d'un événement.

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Chez moi ça ne marche ni avec l'un ni avec l'autre
    Montre moi ton script.


    Sinon tu peux définir dynamiquement les fonctions qui seront appelées lors d'un événement.
    merci pour tes réponses !
    je t'envoie une version du code qui correspond un peu plus a ce que je veux faire :

    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
    <html>
    	<head>
    		<SCRIPT type="text/javascript">
    			window.onload = function() {
    				var elem = document.getElementById("kala");
    				var code = "<SCRIPT type='text/javascript' id='nouveau' >alert('bonjour')\</SCRIPT\>";
    				elem.innerHTML = code;
    				var e = document.getElementById("nouveau");
    				alert(e);
    				eval(e.innerHTML);
     
    		</SCRIPT>
     
    	</head>
    	<body>
    		<div id="kala"></div>
    	</body>
    </html>

    Lorsque la page se charge, l'object récupéré devrais d'abord être affiché ([Object] dans Firefox, et malheureusement 'null' dans IE).
    Puie ensuite, le code javascript s'execute par la fonction eval(), dans firefox, ca affiche "coucou", dans IE, ca plante car l'objet est null.

    Je dois éviter de créer le code javascript dynamiquement, car les données dans ce code sont générée dynamiquement par le script CGI dans le fichier ajax, et c'est un module ajax utilisé par d'autres pages. Enfin ce que j'écris ne dois pas être clair, mais j'évite ceci a cause de mon architecture..

  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
    Salut,

    Essaie voir avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     function loadScript(src) {
       var head = document.getElementsByTagName("head")[0];
       script = document.createElement('script');
       script.type = 'text/javascript';
       script.src = src;
       head.appendChild(script);
     }

  7. #7
    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
    Citation Envoyé par Camille01 Voir le message
    Lorsque la page se charge, l'object récupéré devrais d'abord être affiché ([Object] dans Firefox, et malheureusement 'null' dans IE).
    Puie ensuite, le code javascript s'execute par la fonction eval(), dans firefox, ca affiche "coucou", dans IE, ca plante car l'objet est null.
    ah ton script fonctionne car tu utilises eval
    Ton script revient à ceci en fait :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      <script type="text/javascript">
    		window.onload = function() {
    				var code = "alert('bonjour')";
    				eval(code);
            }
      </script>

    Sans eval, ton code ne marche pas, le script n'est pas exécuté lors de son insertion dans la balise div

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

Discussions similaires

  1. Comment insérer un code dans une page html pour agrandir une image au survol
    Par Heyho13 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 21
    Dernier message: 20/04/2011, 10h42
  2. comment insérer du code fortran dans prog c ou c++ ?
    Par informatik dans le forum Fortran
    Réponses: 6
    Dernier message: 24/08/2010, 16h34
  3. [OL-2003] Comment insérer du code HTML dans Outlook 2003 ?
    Par fefe69 dans le forum Outlook
    Réponses: 0
    Dernier message: 25/07/2009, 18h42
  4. [DOM] comment améliorer un tableau dynamique ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/04/2008, 10h34
  5. comment insérer du code assembleur
    Par blueLight dans le forum C++
    Réponses: 16
    Dernier message: 13/02/2008, 09h24

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