2009-10-01 8 views
2

Bonjour, Je suis tombé sur un bug ou un comportement étrange et je ne trouve pas la solution nulle part. J'utilise XSLT pour afficher du code HTML à partir d'un document XML. À l'intérieur de cette feuille de style, j'utilise javascript/jQuery pour ajouter du contenu. Mais apparemment, vous ne pouvez pas ajouter autre chose que des textes à n'importe quel conteneur.JQuery et XSLT

<script type="text/javascript"> 
<![CDATA[ 
    $(function() { 
     $("div#topbanner").html('<img src="images/load-top.gif" class="load" />'); 
    }); 
]]> 

Il fonctionne parfaitement sous Firefox, mais avec IE7, après l'exécution des codes, seul le unrendered HTML apparaît dans mon DIV. Comme si le <> a été remplacé par &gt; &lt; respectivement. Pour le faire fonctionner sous IE7, je dois retirer le tag CDATA mais, ce faisant, Firefox ne le rend pas.

Existe-t-il un moyen de rendre l'information dans la méthode html exécutée en tant que code html?

Nous vous remercions à l'avance

+0

"dans la méthode html" La méthode html désigne la méthode jQuery.html. L'équivalent de innerHTML –

Répondre

0

j'ai vu quand j'oublie d'utiliser

disable-output-escaping="yes" 

dans mon <xslvalue-of../>

+0

J'ai entendu parler de cette fonction mais où vais-je l'ajouter dans mon javascript? Je veux être capable d'exécuter le javascript, donc je dois l'inclure dans une balise CDATA mais j'ai besoin de ma fonction Javascript/JQuery pour exécuter du vrai HTML et non sa version avec des entités. J'ai fait un peu de googled et il semble être un comportement connu lors de l'utilisation de innerHTML dans Javascript quand il est exécuté dans une feuille de style XSLT. Mais aucun n'a de solutions. Et vous? :) Steve –

+0

Je suppose que je ne comprends pas alors. Est-ce que le code jquery (ci-dessus) ne fonctionne pas comme prévu, ou est-ce le XSLT (non montré)? Je supposais que le XSLT rendait le > et <. Peut-être plus d'informations/code d'échantillon est nécessaire pour répondre à votre question? – Keith

2

XSLT = Insanity Javascript intégré & de

Le solution:

<script type="text/javascript"> 
    //<xsl:comment><![CDATA[ 
     $(function() { 
      $("div#topbanner").html('<img src="images/load-top.gif" class="load" />'); 
     }); 
    //]]></xsl:comment> 
</script> 
Que se passe-t-il si vous essayez ceci?
0

<![CDATA[ 
$(function() { 
    $("<img>").addClass("load").attr("src","images/load-top.gif").appendTo("div#topbanner"); 
}); 
]]> 

ou si cela ne fonctionne toujours pas ... essayez cette méthode

<![CDATA[ 
$(function() { 
    myimg = new Image(); 
    $(myimg).addClass("load").attr("src","images/load-top.gif").appendTo("div#topbanner"); 
}); 
]]> 
1

J'ai trouvé une solution. Je dois garder mon javascript dans un fichier externe.

Merci à tous ceux qui ont essayé de vous aider.