🦆

data URLの画像をダウンロードリンクにするとAndroid Chromeがフリーズする問題の対処

2024/07/06に公開

↓をAndroid Chromeで開いて、画像を長押しするとフリーズしてしまう
https://8d8ksl-1234.csb.app/
Image from Gyazo

data URLを<img>で表示して、さらに<a download>でダウンロードリンクを作ると不具合が発生する

<a download="test.jpg" href="data:~~~">
  <img src="data:~~~">
</a>

Blobにすれば解決

fetchでdata URLをBlobに変換し、URL.createObjectURLでURLを生成する

const response = await fetch("data:~~~");
const url = URL.createObjectURL(await response.blob());
<a download="test.jpg" href="blob:~~~">
  <img src="blob:~~~">
</a>

油彩ドット絵メーカーという個人開発アプリにて、ユーザーから不具合報告を受けて修正しました
https://oil-pixel.hata6502.com/

Discussion