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でのエスケープが加わって「\\\\」となります。