27

HTML5 の "download" 属性をサポートしていないブラウザー用のクライアント側のフォールバック オプションはありますか?

現在、これは Chrome でのみ適切にサポートされています。Firefox はサポートしていますが、「セキュリティ」の問題のために同じドメインからのファイルでのみ動作するべきであるという鈍い見方をしています。

これを処理する適切な方法は、要求されたファイルを Content-Disposition ヘッダーでプロキシするバックエンド サーバーを用意することですが、この場合、オプションではない可能性が高くなります。

Firefox の「セキュリティ シアター」も、プロキシを設定するための任意のメカニズムであるため、あまり役に立ちません。

https://github.com/dcneiner/Downloadifyを見ていましたが、リモートファイルアクセスではなく、ファイル作成のみをサポートしていることに気付きました。

4

2 に答える 2

14

短い答え:いいえ。すでに言及した属性以外に、downloadこれを行うためのクリーンなクライアント側の方法はありません。適切なヘッダーを送信するのが最善ですが、おそらく使用したくないハックがあります。

属性を持つすべてのリンクdownload( で取得できます) については、 XMLHttpRequestdocument.querySelectorAll('a[download]')を使用して、HREF に記載されている URL でページ/データを取得します。次に、関数 (または IE のポリフィル) を使用して、base64 文字列に変換します。文字列の先頭に追加し、これをアンカーの新しい HREF 属性として設定してから、属性を削除します。(おそらく、 Modernizrのようなものを使用して、最初にブラウザーのサポートを調査する必要があります)。btoa()"data:application/octet-stream;base64,"download

嫌だって言っただろ!

于 2013-12-03T02:49:17.590 に答える