为什么我在IE中收到此错误:"The data area passed to a system call is too small"?



我正在使用Javascript创建一个csv文件以供下载,除了IE之外,它在所有方面都运行良好(我已经测试了8和10)。

在IE8中,当我单击按钮以创建和下载文件时,出现一个错误并说"The data area passed to a system call is too small"。 在IE10中,当我单击该按钮时,它只会打开一个新选项卡,其中包含我在地址栏中创建的URL,但不下载任何内容。

知道这个错误意味着什么吗?

我在按钮中有以下代码:

var csvContent = "data:text/csv;charset=utf-8,";
csvContent += escape(myCSVvariable);
var encodedUri = encodeURI(csvContent);
window.open(encodedUri);

这与这个问题有关,但我开始了一个新问题,因为在更改某些内容后我遇到了不同的错误 - 如何使用 Javascript 创建和下载 csv 文件?

这是一个已知问题,但有一个解决方法。

添加以下代码

if (navigator.msSaveBlob) 
{ // IE 10+ 
navigator.msSaveBlob(new Blob([csv], { type: 'text/csv;charset=utf-8;' }), "filename.csv"); 
}

并且问题应该得到解决。这适用于IE10,我还没有在IE8上测试过它(我不再有IE8了!

指:

https://msdn.microsoft.com/library/Hh772331

https://msdn.microsoft.com/library/Hh772298

IE 中 URL 有大小限制。

相关内容

最新更新