11548 sujets

JavaScript, DOM et API Web HTML5


<script>

document.write("<div id='test\" 'test'>toto</div>")

</script>


Comment escaper la simple quote avant le second test? un slash, 2 slash... ne marchent pas... si quelqun à une solution?
Bonjour...

C'est tout à fait valide en JavaScript, et ça fonctionne. Par contre, le code que tu tentes d'injecter dans le parseur HTML est parfaitement incorrect (mets-le tel quel dans une page pour t'en rendre compte).

Moralité : utiliser le DOM (document.createElement par exemple) plutôt que document.write.
Julien Royer a écrit :
Bonjour...

C'est tout à fait valide en JavaScript, et ça fonctionne. Par contre, le code que tu tentes d'injecter dans le parseur HTML est parfaitement incorrect (mets-le tel quel dans une page pour t'en rendre compte).

Je m'en rend bien compte puisque ce que je cherche à faire c'est pouvoir mettre la ' avant le second test.

Je peux te remettre le code 'corrigé' qui ne fonctionne pas.



<script> 
 
document.write("<div id='test\" \'test'>toto</div>") 
 
</script> 


Comme je le disais qu'il y ait 1,2,x \ cela ne fonctionne pas. Il n'y a visiblement pas de moyen d'avoir un mélange de " et ' dans un cas pareil.
Ton problème est loin d'être exprimé clairement... J'espère que tu ne cherches pas à générer un id avec de tels caractères.

Encore une fois, il ne s'agit pas d'un problème JS mais d'un problème HTML.

Tu dois échapper les caractères ' ou " respectivement dans une valeur d'attribut, selon si cette valeur est encadrée par les caractères ' ou " respectivement.

En gros, dans ton exemple, tu pourrais écrire :
document.write('<div id="test&quot; \'test">toto</div>');

Mais encore une fois, c'est du masochisme de faire ça avec document.write...
Modifié par Julien Royer (27 Oct 2009 - 00:34)