8791 sujets

Développement web côté serveur, CMS

Bonjour,

Voilà, je m'amuse un peu avec l'API DOM dispo dans PHP5 et je tâche de généré du XHTML valide.
Pour celà, une fois mon arbre chargé/créé/modifié je "l'exporte" via la fonction "saveXML()" qui est la seule à donné une sortie valide XHTML.

Tout fonctionne sauf le JavaScript (qui n'a jamais été le copain des standard Smiley cligne ).

Si j'ai le code suivant dans mon arbre d'origine (importé depuis un fichier type text/html formaté en XHTML valide):
<script>
test;
</script>


Je me retrouve avec
<script><![CDATA[test;]]></script>


NB: j'ai volontairement enlevé les attributs de l'élément script dans l'exemple, qu'ils soient présent ou pas ça ne semble rien changer.

Bien entendu avec ces "vilains" CDATA le code JS ne s'exécute pas et fait une tout aussi vilaine erreur.

Comment remédier à cela?
Pour le moment j'ai déporté tous mes appels JS dans des fichiers extérieurs. Mais c'est plus long à l'affichage et peu commode.

Merci d'avance pour votre précieuse aide!
Modifié par Just (19 Feb 2008 - 12:49)
Je pense que tu n'as pas le choix, il faut faire une petite bidouille regex.
Il faut commenter la ligne du CDATA pour qu'elle ne s'exécute pas en js.
Merci QuentinC pour ta réponse rapide!

J'ai effectivement envisager cette alternative... mais je voulais éviter tant que possible l'ajout de code qui se paierais en ressource serveur.
Je vais tout de même rejeter un oeil du coté des constantes de l'API.

Je laisse courir le sujet.
Toute contribution reste la bienvenue.
Salut,
Just a écrit :
Tout fonctionne sauf le JavaScript (qui n'a jamais été le copain des standard Smiley cligne ).

J'aimerais bien voir ce genre d'affirmations étayées...

Voilà, c'était ma remarque non constructive. Smiley cligne
@Julien Royer: c'était en faites pour éviter les foudres des anti-JS qui, il y a encore quelques années, brulaient tout ceux qui osait se buté sur le JS ^^.
Mais je n'avais pas pensé à l'effet inverse Smiley smile .

Sur ce évitons la polémique, qui aurait pour seule conséquence de laisser mon problème technique sans solution :x.
Merci Smiley lol !
a écrit :
J'ai effectivement envisager cette alternative... mais je voulais éviter tant que possible l'ajout de code qui se paierais en ressource serveur.

Ca te chipote d'avoir du code JS dans un fichier externe ou de rajouter quelques caractères pour mettre en commentaire le CDATA juste à cause des ressources serveur ? Si ton optimisation en exécution/génération de code se fait jusqu'à ce point là, je serais vraiment curieux de voir comment tu programmes toutes tes pages !!!

Et puis bon, j'aimerais savoir quelle est la différence en ressources serveur entre ceci :
<script><![CDATA[test;]]></script>

Et ceci :
<script type="text/javascript">
<!--/*--><![CDATA[//><!--
test;
//--><!]]>
</script>