3

これ :

<script type="text/javascript">
var a = new Array("</script>");
alert(a);
</script>

...期待どおりに機能しません(少なくとも私は)。文字列"</script>"は、引用符で囲まれていても、スクリプトの終わりとして解釈されます。これらの jsfiddles を参照してください:

http://jsfiddle.net/RYbTS/

http://jsfiddle.net/PB73z/

1 つ目は配列の最初の要素を通常の方法で宣言し、2 つ目はそれをコンパクトな形式で宣言します。どちらの場合も、ブラウザー (Chrome、FF、IE) はスクリプトを停止"</script>"し、アラートに到達しません。

引用符または二重引用符のどちらを使用しても同じように動作します。

それは期待されていますか?回避策はありますか?

編集:ありがとう、バックスラッシュをエスケープします。申し訳ありませんが、全員の回答を受け入れることができませんでした。最初の回答を受け入れましたが、皆さんに感謝します。

Juhana が提供するリンクは、この動作を説明しています。

要素内のテキスト ノードが JS エンジンに渡される前にすべての HTML が解析さ</script>れ、JS 文字列リテラル内にあるための特別な処理は行われません。

4

3 に答える 3