5 votes

Échapper aux caractères dans les guillemets simples et doubles de JavaScript

J'ai une question sur l'échappement des caractères en JavaScript et j'espère que vous pourrez m'aider. Disons que j'ai le code JavaScript suivant :

document.write("<img src=\"http://www.google.com\" />");

Dans l'exemple ci-dessus, vous pouvez voir que j'ai commencé l'opération document.write avec des guillemets doubles " et c'est pourquoi j'ai besoin d'échapper aux guillemets à l'intérieur de l'espace < img src="" /> pour s'assurer que JavaScript pense toujours qu'il s'agit d'une chaîne de caractères.

Mais dans l'exemple ci-dessous, vous pouvez voir que j'ai utilisé un guillemet simple. ' pour commencer la document.write déclaration. Ma question est la suivante : dois-je toujours échapper les guillemets doubles ? Je sais que la déclaration fonctionnera sans cela, mais quelle est la meilleure pratique ?

document.write('<img src=\"http://www.google.com\" />');  

La raison pour laquelle je demande cela est que j'ai écrit une instruction conditionnelle qui déclenche une image (comme dans la ligne ci-dessus) mais cela ne semble pas fonctionner et j'aimerais exclure toutes les possibilités quant à la cause de ce problème. Je suis confronté à ce genre de problème pratiquement tous les jours, donc toute aide serait très appréciée. Il s'agit peut-être d'une question idiote, je m'en excuse d'avance...

13voto

Tim Points 2541

Lorsque vous utilisez des guillemets simples, vous ne devez échapper qu'aux guillemets simples, et non aux guillemets doubles.

(EDIT : Et vice versa !)

3voto

OptimusCrime Points 6235
document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

Il vous suffit d'échapper au même type de guillemets que ceux que vous utilisez.

3voto

Elias Van Ootegem Points 29404

Vous avez maintenant compris : il n'est pas nécessaire d'échapper les guillemets que vous n'utilisez pas comme délimiteurs de cette chaîne particulière. Cependant, la question de savoir quelle est la meilleure pratique est une autre histoire. Je connais des gens qui vous diront que "toujours échapper les guillemets" est une bonne habitude à prendre. Je ne suis pas d'accord. Contrairement à d'autres langages, JavaScript est raisonnablement indulgent en ce qui concerne les caractères échappés : dans votre deuxième exemple, les barres obliques inverses ne seront pas imprimées.

Ce n'est pas toujours le cas, aussi ma suggestion serait la suivante : soyez cohérent dans le choix des guillemets que vous utilisez (simple || double) et n'échappez que ceux qui doivent l'être. En fonction des autres langages que vous utilisez, vous devrez peut-être réfléchir un peu aux guillemets que vous allez utiliser. Si vous utilisez PHP, par exemple, tenez-vous en aux guillemets simples, car les guillemets doubles ne se limitent pas à délimiter une chaîne de caractères. Si vous avez l'habitude d'écrire des langages de type C (ou Java), il est préférable de garder l'habitude d'utiliser des guillemets doubles, car la différence entre les guillemets simples et les guillemets doubles est encore plus grande dans ces langages

1voto

MakuraYami Points 1378

document.write('<img src="http://www.google.com" />'); Il fonctionnera parfaitement.

même chose pour document.write("<img src='http://www.google.com' />");

0voto

JDev Points 2541
<html>
<body>

<script type="text/javascript">

document.write(escape("<img src=\"http://www.google.com\" />"));

</script>

</body>
</html>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X