簡體   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