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] Pb pour insérer la balise script.


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut [DOM] Pb pour insérer la balise script.
    Bonjour,
    j'ai un souci pour insérer la balise script dans le DOM.
    Je fais une transformation XSLT, puis je fais un appenChild du resultat de la transformation sur chaque noeud DOM qui s'y trouve.

    Le probleme c'est qu'en parsant le resultat de la transformation XSLT il n'y a pas moyen de voir la balise script.
    Je precise qu'à le fin de mon fichier xsl je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" encoding="utf-8"/>
    <xsl:template match="/">
    <div>
    ...
    	<script>
    		<xsl:attribute name="type">text/javascript</xsl:attribute>
    		<xsl:attribute name="src">js/listeProductsCallback.js</xsl:attribute>
    	</script>
    </div>
    </xsl:template>
    </xsl:stylesheet>
    La solution que j'ai actuellement est de le faire en 2 pass.
    J'insère tous les noeuds sauf "script" car il ne le detecte pas.
    Une fois que l'injection dans le DOM est faite, je reparse le resultat de la transformation à la recherche de la balise script qu'il arrive à trouver et que j'insère dans le DOM.

    Comment se fait-il qu'il n'arrive pas à le trouver dans la 1ère pass?
    Y'aurait-il une autre manière pour appeller un script js dans xsl?
    (j'ai bien sûr essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="monjs.js"</script>
    )

    merci.

  2. #2
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Salut, tu peux essayer d'insérer ton script avec cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <SCRIPT LANGUAGE="javascript" DEFER="true">
         <xsl:comment>
          <![CDATA[ 
    	//Placer ici code JS ...
          ]] > 
        </xsl:comment>
        </SCRIPT>

  3. #3
    Membre actif
    Inscrit en
    Mai 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 201
    Points : 202
    Points
    202
    Par défaut
    salut,
    Je suis entrain de me prendre la tête pour faire une transformation XSLT aussi.
    Sauf que moi je veux le faire en JS : en tout un script JS qui upload les fichier , fait la transformation et enfin me renvoie la réponse sur ma apge web..c'est comme ça que tu as fait aussi? est ce que je peux avoir de l'aide?

  4. #4
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut
    Je reviens sur un point:
    En fait le tag script est accessible non pas par nodeType = 1 et nodeName = "script"
    mais par xmlElement.getElementsByName('script');

    du coup j'ai crée un noeud ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (xmlElement.getElementsByTagName('script')){
    var script = xmlElement.createElement("script");
    script.setAttribute('src', xmlElement.getElementsByTagName('script')[0].getAttribute('src')) ;
    script.setAttribute('type', xmlElement.getElementsByTagName('script')[0].getAttribute('type'));
    script.setAttribute('defer', xmlElement.getElementsByTagName('script')[0].getAttribute('defer'));
     
    toAdd.appendChild(script);
    }
    toAdd étant le DOM de la première pass qui est déjà dans le DOM courrent.
    Avec ce code ça ajoute bien un noeud "script" avec tout ce qu'il faut.
    Par contre le javascript ne s'execute pas.

    Merci LEK, j'ai bien essayé ta solution mais sans succès.
    J'ai fais une recherche sur l'attribut defer que je ne connaissais pas, je suis tombé sur cette page
    J'ai donc testé avec defer="defer" et non defer="true"
    <script type="text/javascript" src="monjs.js" defer="defer"></script>
    sans succès.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2009, 12h03
  2. Réponses: 2
    Dernier message: 15/05/2007, 12h14
  3. [DOM] DOM : createElement d'une balise script dans le HEAD
    Par Mike_69 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/04/2007, 14h31
  4. [DOM] Comment supprimer une balise <script> ?
    Par cassy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/10/2006, 11h24
  5. Script pour enlever les balises html
    Par Scratch48 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/11/2005, 17h16

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