LoginSignup
5
4

More than 5 years have passed since last update.

data:text/htmlから始まるデータスキームが動作しないときの対処法 (原因は#)

Last updated at Posted at 2019-03-10

以前までメモ帳などの簡単な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です。
お使いのテキストエディタや テキスト操作ツール などを使って一括置換するだけです。

参考文献

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4