HTMLの`<script>`タグの奇妙な解析ルールとJSONのエスケープ

2025-08-09

この記事では、HTMLの``タグの、しばしば直感に反する解析ルールについて深く掘り下げ、それが驚くべき方法でウェブページを壊してしまう可能性があることを説明します。ブラウザが`<script>`タグ内のコンテンツを解析する際に、異なる状態(スクリプトデータ、エスケープされたスクリプトデータ、二重にエスケープされたスクリプトデータ)に入る仕組みを解説します。「二重にエスケープされたスクリプトデータ」状態になると、閉じタグ` `が正しく機能せず、ページのレンダリングが壊れてしまいます。この記事では、JSON文字列内の`<`と`>`をエスケープするために`json_encode($data, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES)`(または同様の方法)を使用することを推奨し、「二重にエスケープされたスクリプトデータ」状態を回避して、ページの正しいレンダリングを保証することを提案しています。

開発