HTML解析で病的なケースに遭遇しました。<script>
タグは最初の終了タグまで実行されるといつも思っていました</script>
。しかし、これが常に当てはまるとは限りません。
これは有効です:
<script><!--
alert('<script></script>');
--></script>
そしてこれも有効です:
<script><!--
alert('<script></script>');
</script>
しかし、これはそうではありません:
<script><!--
alert('</script>');
--></script>
そして、これもそうではありません:
<script>
alert('<script></script>');
</script>
この動作はFirefoxとChromeで一貫しています。したがって、信じがたいことですが、ブラウザは、スクリプトタグ内のhtmlコメント内でopen+closeスクリプトタグを受け入れるようです。では、問題は、ブラウザが実際にスクリプトタグをどのように解析するのかということです。これが重要なのは、私が使用しているHTML解析ライブラリであるNokogiriが、最初の終了タグまでの明らかな(ただし正しくない)ルールを想定し、このエッジケースを処理しなかったためです。他のほとんどのライブラリもそれを処理しないと思います。