以前までメモ帳などの簡単なWebアプリを data:text/html
から始まるデータURIスキームを使用して作れたのですが、それが Chrome 72 から動作しなくなっています。
原因
Treat '#' as ending data URI body content (removed)
https://www.chromestatus.com/feature/5656049583390720
URL内での #
は本来は指定したIDを持つ要素へ飛ぶようにするものです。例えば index.html#foo
というURLであれば、foo
をIDに持つ要素にジャンプします。しかし、Chromeではそれをデータスキーム内では無視していました。
そのおかげでデータスキームを使用したWebアプリが作れていたのですが、それらがアップデートにより動作しなくなってしまいました。
これは、データスキームの #
以降が無視されることによって発生します。
例えば data:text/html,<html><style>body{color:#ddd}</style><p>test
を開くと、color:#ddd
に含まれる #
以降が無視されて、test
という文字列が描画されません。
Firefox は以前から #
以降を無視するようになっていましたが、Safari(2019/3/10現在)は #
以降もそのまま描画します。
対処法
URL内に含まれるすべての #
をエスケープして %23
とすればOKです。
お使いのテキストエディタや テキスト操作ツール などを使って一括置換するだけです。