在我在这里和其他网站上的所有研究之后,我已经得到了以下代码,用于保存给定文件名的一些给定文本(" 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中的文件名和无响应问题吗?
答案 0 :(得分:0)
除去
link.setAttribute("target", "_blank");
变化
var link = document.createElement("link");
到
var link = document.createElement("a");
答案 1 :(得分:0)
事实证明,两种浏览器的细微差别是在锚“a”中创建了一个“链接”。
var link = document.createElement("a");
以上一行使其有效。