如何在所有浏览器上从javascript变量下载文本?

如何在所有浏览器上从javascript变量下载文本?,javascript,file,google-chrome,download,cross-browser,Javascript,File,Google Chrome,Download,Cross Browser,我需要一个函数,可以将javascript变量中的字符串下载到文本文件(5-7MB)中。该函数应该可以跨浏览器工作 我尝试过制作这样的下载功能,但在Chrome上不起作用。FireFox会打开“保存”对话框,但Chrome不会。此外,当我在Chrome中禁用“询问保存文件的位置”时,它会显示“失败-网络错误”。由于我在本地做所有事情,我不明白为什么会出现这个问题 函数下载(文件名、文本){ var-element=document.createElement('a'); element.set

我需要一个函数,可以将javascript变量中的字符串下载到文本文件(5-7MB)中。该函数应该可以跨浏览器工作

我尝试过制作这样的下载功能,但在Chrome上不起作用。FireFox会打开“保存”对话框,但Chrome不会。此外,当我在Chrome中禁用“询问保存文件的位置”时,它会显示“失败-网络错误”。由于我在本地做所有事情,我不明白为什么会出现这个问题

函数下载(文件名、文本){
var-element=document.createElement('a');
element.setAttribute('href','data:text/plain;charset=utf-8',+encodeURIComponent(text));
setAttribute('download',filename);
element.style.display='none';
document.body.appendChild(元素);
元素。单击();
document.body.removeChild(元素);

}
如果此图标出现在您的地址栏中


然后检查你的Chrome配置。

我发现了一个简单的修改,现在可以在我的FireFox和Chrome上使用。它使用BLOB绕过锚点大小限制。不过,它在Microsoft Edge上仍然不起作用

函数下载(文件名,文本,type=“text/plain”){
//创建一个不可见的元素
常量a=document.createElement(“a”);
a、 style.display=“无”;
文件.正文.附件(a);
//将HREF设置为要下载数据的Blob表示形式
a、 href=window.URL.createObjectURL(
新Blob([text],{type})
);
//使用“下载”属性设置所需的文件名
a、 setAttribute(“下载”,文件名);
//通过模拟单击触发下载
a、 单击();
//清理
window.URL.revokeObjectURL(a.href);
文件.body.removeChild(a);

}
I使用这个:,将文本保存到文件的示例是在repo上:
var blob=new blob([“Hello,world!”],{type:“text/plain;charset=utf-8”});FileSaver.saveAs(blob,“helloworld.txt”)如果您的问题与文件大小有关,此答案可能会对您有所帮助。@Sackey感谢链接,似乎无法使用锚下载大于2MB的文件。下载图标在浏览器上不可见。