プロンプト

上の例は次のように書きました。

<script type="text/javascript">
  var s = prompt('お名前は?');
  document.write('<p>こんにちは,' + s + 'さん!<\/p>');
</script>

ここで </p><\/p> としているのは,問題を起こすかもしれない文字列 </ が現れるのを防ぐためです。

HTMLの特別な文字を実体参照に直す

上の例そのままでは,HTMLタグを入力された場合に問題が生じるかもしれません。

そのため,この例は実際には次のようになっています:

<script type="text/javascript">
  var s = prompt('お名前は?');
  document.write('<p>こんにちは,' + htmlentities(s) + 'さん!<\/p>');
</script>

この htmlentities() という関数は自前で次のように定義したものです:

function htmlentities(s) {
  s = s.replace(/&/g, '&amp;');
  s = s.replace(/>/g, '&gt;');
  s = s.replace(/[<]/g, '&lt;');
  return s;
}

最後に余分な括弧が入っているのは </ という(問題を起こすかもしれない)文字列が現れるのを防ぐためです。


奥村晴彦

Last modified: 2012-04-18 09:59:06