ごあいさつ
2008/4/1(火)
■[WEB] JavaScriptの関数へ「'」はエスケープしないと引数として渡せない?
以下のようにonclickからJavaScriptの関数をコールする場合は、「'」はエスケープ(\')しないと引数として渡せない。
以下で、確認しました。ただしIE6のみ確認。
<html>
<body>
<form name="FM">
<input type="text" name="IP" value="ケース1:反応あり" onclick="subx('cb\'b"\\bc')">
<input type="text" name="IP" value="ケース2:反応なし" onclick="subx('cb'b"\\bc')">
<input type="text" name="IP" value="ケース3:反応なし" onclick="subx('cb'b"\\bc')">
</form>
<script>
function subx(a){
alert(a);
}
</script>
</body>
</html>
ケース2とケース3は同じように無反応になります。
たぶん、&#39;は「'」と解釈されていると思われます。
このような場合は、「\'」にするとonclickが反応します。
あと、ダブルクォートのエスケープについては。
JavaScriptのロジックの文字列で、文字としての「\」を記述するときは、エスケープして「\\」となります。
これをCGIから標準出力する場合、Perlでのダブルクォート文字列では、Perlでのエスケープが加わって「\\\\」となります。
トラックバック - http://d.hatena.ne.jp/chaichanPaPa/20080401/1207049001
リンク元
- 207 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP266JP266&q=CreateObject("WScript.Shell")+IE ホームページ
- 181 http://www.google.co.jp/search?q='&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:unofficial&client=firefox-a
- 174 http://www.google.co.jp/search?q='&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 174 http://www.google.co.jp/url?sa=t&rct=j&q='&source=web&cd=1&ved=0CCIQFjAA&url=http://d.hatena.ne.jp/chaichanPaPa/20080401/1207049001&ei=-YyFTs2SF8TImAXd4831Dw&usg=AFQjCNER2NqOPw_jEwUCOd17bgwLmCGChw
- 168 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=2oL&q=cgi+httpパラメータ&btnG=検索&lr=lang_ja
- 147 http://phpspot.org/blog/archives/2008/04/phphtmlspecialc_1.html
- 95 http://www.google.co.jp/search?hl=ja&q=javascript+エスケープ+引数&lr=
- 90 http://www.google.co.jp/search?q=javascript+エスケープ+関数&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP303JP303
- 69 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/chaichanPaPa/20080401/1207049001&ei=qm1ET77ZH-uhmQX30cj7Aw&usg=AFQjCNER2NqOPw_jEwUCOd17bgwLmCGChw&sig2=9wAzJ4wsQILgUDx1SxkVUQ
- 68 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q='

