问题
I'm creating a csv file for download using Javascript and it's working perfectly fine in everything except for IE (I've tested 8 and 10).
In IE8, when I click the button to create and download the file I get an error that comes up and says "The data area passed to a system call is too small"
. In IE10, when I click the button it just opens a new tab that has the URL I've created in the address bar but doesn't download anything.
Any ideas what this error means?
I have this code in a button:
var csvContent = "data:text/csv;charset=utf-8,";
csvContent += escape(myCSVvariable);
var encodedUri = encodeURI(csvContent);
window.open(encodedUri);
This is related to this question but I started a new one because I got a different error after changing some things - How do I create and download a csv file using Javascript?
回答1:
This is a known issue, but there is a workaround.
Add the following code
if (navigator.msSaveBlob)
{ // IE 10+
navigator.msSaveBlob(new Blob([csv], { type: 'text/csv;charset=utf-8;' }), "filename.csv");
}
and the issue should be resolved. This works for IE10, I have not tested it on IE8 (I don't have IE8 anymore!)
Refer to:
https://msdn.microsoft.com/library/Hh772331
https://msdn.microsoft.com/library/Hh772298
Source
回答2:
There is a size restriction of URL in IE.
来源:https://stackoverflow.com/questions/20844644/why-am-i-getting-this-error-in-ie-the-data-area-passed-to-a-system-call-is-too