Javascriptで文字列として</script>を使う
以下のXHTML1.0トランジショナルで考える。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
<script type="text/javascript">
//<![CDATA[
alert('</script>');
//]]>
</script>
</head>
<body>
</body>
</html>
以下のalert内の閉じタグが、jsの閉じタグとして認識されてしまい、残念ながら正しく実行されない。
alert('</script>');
■解決策
以下のようにエスケープする。
alert('<\/script>');
もしくは以下のように文字列を結合する。
alert('</' + 'script>');
また、Chrome、Firefox、OperaでXMLパーサーが正しくCDATAセクションを認識するように、ファイルの拡張子をxhtmlにすることも有効な解決策ではあるが、この手法ではIEが正しく認識できない。
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする