如何在FF和Chrome中使用链接下载属性?

时间:2015-07-09 03:11:51

标签: javascript google-chrome firefox download

在我在这里和其他网站上的所有研究之后,我已经得到了以下代码,用于保存给定文件名的一些给定文本(" text"变量)(" fileName&#34 ;变量),但它只能在IE中完美运行。 Firefox下载文件,但使用自己的随机名称(例如" G5QJNAr0")。 Chrome根本没有做任何事情。

try {
    var blob = new Blob([text], {
         type: "text/csv;charset=utf-8"
    });
    if (window.navigator.msSaveOrOpenBlob) {
         window.navigator.msSaveBlob(blob, fileName);
    } else {
        var encodedData = encodeURI(text);
        var link = document.createElement("link");
        link.setAttribute("download", fileName);
        if ( 'URL' in window ) {
            link.setAttribute("href", window.URL.createObjectURL(blob));
            link.setAttribute("target", "_blank");
            link.style.display = "none";
            document.body.appendChild(link);
        } else if ( 'webkitURL' in window ) {
            link.setAttribute("href", window.webkitURL.createObjectURL(blob));
        }
        link.click();
    }
} catch (e) {
    alert("Got error trying download text: " + e);
}

没有浏览器会警告异常。

Chrome会浏览我设置的所有断点,然后点击最后的链接。但绝对没有。

有人可以帮我解决FF和Chrome中的文件名和无响应问题吗?

2 个答案:

答案 0 :(得分:0)

除去

link.setAttribute("target", "_blank");

变化

var link = document.createElement("link");

var link = document.createElement("a");

答案 1 :(得分:0)

事实证明,两种浏览器的细微差别是在锚“a”中创建了一个“链接”。

var link = document.createElement("a");

以上一行使其有效。