@blog.justoneplanet.info

日々勉強

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が正しく認識できない。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment