49

次のコードから、ファイルをダウンロードする動的アンカー タグを作成しています。このコードは Chrome では適切に機能しますが、IE では機能しません。どうすればこれを機能させることができますか

<div id="divContainer">
    <h3>Sample title</h3>
</div>
<button onclick="clicker()">Click me</button>

<script type="text/javascript">

    function clicker() {
        var anchorTag = document.createElement('a');
        anchorTag.href = "http://cdn1.dailymirror.lk/media/images/finance.jpg";
        anchorTag.download = "download";
        anchorTag.click();


        var element = document.getElementById('divContainer');
        element.appendChild(anchorTag);
    }

</script>
4

9 に答える 9

35

Internet Explorer は現在、タグのDownload属性をサポートしていません。A

http://caniuse.com/downloadおよびhttp://status.modern.ie/adownloadattributeを参照してください。後者は、その機能が IE12 で「検討中」であることを示します。

于 2013-08-23T16:52:15.520 に答える
31

私の場合、IE 11 (バージョン 11.0.9600.18665) の使用をサポートする必要があるため、@Hennersのコメントで提供されたソリューションを使用することになりました。

// IE10+ : (has Blob, but not a[download] or URL)
if (navigator.msSaveBlob) {
    return navigator.msSaveBlob(blob, fileName);
}

とてもシンプルで実用的です。

どうやら、この解決策は、 dandavisによって作成された Javascriptダウンロード機能で見つかったようです。

于 2017-05-31T14:28:51.803 に答える
5

ビルド 10547+ の時点で、Microsoft Edge ブラウザーはタグのdownload属性をサポートするようになりました。a

<a href="download/image.png" download="file_name.png">Download Image</a>

エッジ機能の更新: https://dev.windows.com/en-us/microsoft-edge/platform/changelog/desktop/10547/

[ダウンロード] 標準: http://www.w3.org/html/wg/drafts/html/master/links.html#attr-hyperlink-download

于 2015-12-10T00:54:12.750 に答える
3

このコード フラグメントを使用すると、IE、Edge、およびその他の最新のブラウザーで blob をファイルに保存できます。

var request = new XMLHttpRequest();
request.onreadystatechange = function() {

    if (request.readyState === 4 && request.status === 200) {

        // Extract filename form response using regex
        var filename = "";
        var disposition = request.getResponseHeader('Content-Disposition');
        if (disposition && disposition.indexOf('attachment') !== -1) {
            var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
            var matches = filenameRegex.exec(disposition);
            if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
        }

        if (window.navigator.msSaveOrOpenBlob) { // for IE and Edge
            window.navigator.msSaveBlob(request.response, filename);
        } else {
            // for modern browsers
            var a = document.createElement('a');
            a.href = window.URL.createObjectURL(request.response);
            a.download = filename;
            a.style.display = 'none';
            document.body.appendChild(a);
            a.click();
        }
    }

    button.disabled = false;
    dragArea.removeAttribute('spinner-visible');
    // spinner.style.display = "none";

};
request.open("POST", "download");
request.responseType = 'blob';
request.send(formData);

IE および Edge で使用する場合: msSaveBlob

于 2017-04-07T08:23:23.117 に答える
0

ここからコードをコピーし、ES6 と ESLint 用に更新してプロジェクトに追加しました。

コードを保存して、download.js次のようにプロジェクトで使用できます。

import Download from './download'
Download('/somefile.png', 'somefile.png')

(キャンバス オブジェクトからの) dataURL などをサポートしていることに注意してください。詳細については、 https://github.com/rndmeを参照してください。

于 2019-07-04T06:08:12.980 に答える
0

最初に子を追加してからクリックします

または、 window.location= 'url' を使用できます。

于 2013-08-23T04:54:07.180 に答える