download
タグの属性をタグで使用しようとすると、さまざまなブラウザで奇妙な動作が発生しています(href
がdataUrl
の場合)。ダウンロード属性とdataUrl hrefを持つ<a>タグの異なる動作?
コードスニペット:
<a href="data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,UEsDBAoA...Qwwe=" download="testfile.xlsx" ></a>
<a href="data:image/png;base64,iVBORw...ElFTkSuQmCC" download="testfile.png"></a>
コンソール出力/挙動:
-
タグの
var a = document.createElement('a');
a.href = [generated dataUrl];
a.download = filename;
console.log(a.outerHTML);
a.click();
サンプルコンテンツはを生成し(上記にconsole.logラインから)
EDGE:
コンソールメッセージ:ナビゲーションが発生しました。データ:image/png; base64、iVBORw ...
コンソール警告: DOCTYPEが必要です。有効なHTML5のdoctypeを追加することを検討してください: ""
generated dataUrl
は二重チェックされており、Chromeの動作によっても表示されます。
私は<a href="data:[mime][;base64],[encoded data] ></a>" download="filename.ext"
が現在かなり標準的なものだと思いました。
質問:
のJavaScript生成されたファイルのダウンロードを呼び出すためのより良い(すなわち、クロスブラウザの互換性)方法はありますか?
filesaver.js使用することができ、その場合には
は[FileSaver.js](https://github.com/eligrey/FileSaver.js/) – Satpal
はい、FileSaverを使用するを見てください。または、ダウンロード方法に関する注意事項を読む:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a – WaldemarIce
サポートされているタグについては、「https:// caniuse.com /#search = download'」を参照してください。 。それは非常に便利です。 javascriptタグ 'https:// caniuse.com /#search = createElement'でも動作します – pr0cz