Javascript 导出文本文件在 Firefox 中无法识别 \r\n

mik*_*f22 2 javascript firefox

我正在使用以下代码创建一个用于从 javascript 下载的文本文件:

var lineFeed = "\r\n";
var errorFile = "";

errorFile = "This is a test" + linefeed;
errorFile = errorFile + "Line 2";

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

link.download = 'test_errors.csv';
 link.href = 'data:application/text/html,' + errorFile;

 document.body.appendChild(link);
 link.click();

 // Cleanup the DOM
 document.body.removeChild(link);
 link = null;
Run Code Online (Sandbox Code Playgroud)

它在 Chrome 中按预期工作,但从 Firefox 下载的文件不会返回换行符和回车符。知道我是否需要另一个转义字符或其他字符吗?

Gar*_*rey 7

显然,浏览器对待空白的方式不同。Base64 编码可能是最安全的,但您可能只使用 url 编码。

使用“%0D%0A”代替“\r\n”。但是,因为您可能拥有真实数据,并且真实数据可能包含其他会破坏内容的字符(例如引号字符),所以我建议您对整个字符串进行 url 编码:

link.href = 'data:application/text/html,' + encodeURIComponent(errorFile);
Run Code Online (Sandbox Code Playgroud)