5

JavaScript で文字をエスケープすることについて質問があります。あなたが助けてくれることを願っています。次の JavaScript コードがあるとします。

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

document.write上記の例では、二重引用符で始めていることがわかります。"そのため、< 内の引用符をエスケープしてimg src="" />、JavaScript が引き続き文字列であると認識できるようにする必要があります。

しかし、以下の例では、一重引用符を使用してステートメント'を開始していることがわかります。document.write私の質問は、二重引用符をエスケープする必要がありますか? これがなくてもステートメントが機能することはわかっていますが、ベストプラクティスは何ですか?

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

私が尋ねる理由は、(上記の行に従って) 画像を起動する条件ステートメントを書いたが、それが機能していないようで、何が原因であるかについてすべての可能性を除外するためです. 私はほぼ毎日このようなものに出くわすので、どんな助けでも大歓迎です. これはおそらくばかげた質問かもしれませんので、事前に謝罪してください...

4

5 に答える 5

13

単一引用符を使用する場合、二重引用符ではなく、単一引用符のみをエスケープする必要があります。

(編集:逆もまた然り!)

于 2012-05-22T09:59:04.307 に答える
3

これで、全体像がわかりました。特定の文字列の区切り文字として使用していない引用符をエスケープする必要はありません。ただし、ベストプラクティスは別の話です。「常に引用符をエスケープする」ことは良い習慣だと言う人がいることを私は知っています。同意しません。他のいくつかの言語とは異なり、JavaScriptはエスケープ文字に関してはかなり寛大です。2番目の例では、バックスラッシュは出力されません。

これは常に当てはまるわけではないので、私の提案は次のようになります。使用する引用符(シングル||ダブル)で一貫性を保ち、エスケープが必要な引用符のみをエスケープします。使用している他の言語によっては、使用する引用符について少し考えてみてください。たとえば、PHPを使用している場合は、一重引用符を使用します。二重引用符は文字列を区切るだけではありません。Cのような言語(またはJava)の記述に慣れている場合は、二重引用符を使用する習慣を身に付けるのが最善です。これらの言語では、一重引用符と二重引用符の間にさらに大きな違いがあるためです。

于 2012-05-22T10:07:50.713 に答える
3
document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

使用しているのと同じ種類の引用符をエスケープするだけで済みます。

于 2012-05-22T10:00:54.637 に答える
1

document.write('<img src="http://www.google.com" />');うまくいきます。

同じカウントdocument.write("<img src='http://www.google.com' />");

于 2012-05-22T10:00:48.750 に答える
0
<html>
<body>

<script type="text/javascript">

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

</script>

</body>
</html>
于 2012-05-22T10:01:24.337 に答える