<script>
タグを認識していない古いブラウザの場合、HTMLコメントはJavascriptで許可されます。クロム - Javascriptエンジンの解析動作
参考:Are HTML comments inside script tags a best practice?
だから、JSパーサは、解析のために無視されるスクリプトの開始、で<!--
することができます。また、-->
の接頭辞は//
にする必要があります。これにより、JSエンジンも無視されます。
参考W3C:https://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.3.2
これで遊んでいる間、私はこの奇妙な振る舞いを見ました。ここで
<script>
<!--
alert(1);
-->
</script>
は、-->
はクロームJSエンジンによるエラーをスローする必要があります//
、前置されていないことに注意してください。しかし、Chrome JSエンジンはそれらをコメントとみなし、解析を無視します。どうして? (Q1)
そして、別の行動:
<script>
alert(1);
-->''>{][}
</script>
このスニペットは、アラートを実行します。ここでは、-->
の場所に注意してください。この特定の文字列は、パーサーignore
に続いて他のすべての不正な値を生成します。 つまり、-->
の代わりに、他の文字/シーケンスを使用すると、エラーが発生します。
ここで何が起こっていますか? -->
はどのようにこのスニペットを有効にしますか? (Q2)
注:-->
シーケンスの先頭に新しい行を付ける必要があります。つまり、
<script>
<!--
alert(1); -->''>{][}
</script>
はエラーとなります。もう一度、なぜですか? (Q3)
コードをコンソールに貼り付けると、「」タグは無視されます。 –