繁体   English   中英

为什么我在IE中收到此错误:“传递给系统调用的数据区域太小”?

[英]Why am I getting this error in 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的大小限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM