属性値内で’と”を両方使いたい場合のエスケープ方法
シングルクォーテーションマークとダブルクォーテーションマークを使いたい場合どうすればいいか?
例文
簡単に考えると onclick="alert (' この中で \' と \" を使う ') " となりますがエラーが発生します。
これはまずHTMLとしてパースされるからです。
HTML パーサから見れば、この属性値の範囲は、
B.引用符をUNICODE表記とする
等と記載します。
※(注)\ バックスラッシュはキーボードの ¥ 円マークにあたります。入力するときは円マークを入力してください
この内容は私自身がわからず掲示板で質問してかえってきた内容を忘れないようにメモしたものです。
onclick="alert (' この中で ' と " を使う ') "
簡単に考えると onclick="alert (' この中で \' と \" を使う ') " となりますがエラーが発生します。
これはまずHTMLとしてパースされるからです。
HTML パーサから見れば、この属性値の範囲は、
onclick="alert (' この中で \' と \"
となり、 を使う ')" の部分は切り捨てられます。よってJAVASCRIPTでエラーになります。
きちんとエラーのないように記載するには
きちんとエラーのないように記載するには
A.引用符を実体参照にする(属性値内(RCDATA)で実体参照が展開されることを利用して、正しいスクリプトデータへの展開も同時に行う)
onclick="alert (' この中で \' と " を使う ') " や onclick="alert (' この中で \' と " を使う ') "
B.引用符をUNICODE表記とする
onclick="alert (' この中で \' と \u0022 を使う ') " や onclick="alert (' この中で \u0027 と \u0022 を使う ') "
等と記載します。
参考
\b \u0008: backspace BS
\t \u0009: horizontal tab HT
\n \u000a: linefeed LF
\f \u000c: form feed FF
\r \u000d: carriage return CR
\" \u0022: double quote "
\' \u0027: single quote '
\\ \u005c: backslash \
\b \u0008: backspace BS
\t \u0009: horizontal tab HT
\n \u000a: linefeed LF
\f \u000c: form feed FF
\r \u000d: carriage return CR
\" \u0022: double quote "
\' \u0027: single quote '
\\ \u005c: backslash \
※(注)\ バックスラッシュはキーボードの ¥ 円マークにあたります。入力するときは円マークを入力してください
この内容は私自身がわからず掲示板で質問してかえってきた内容を忘れないようにメモしたものです。
スポンサードリンク