Подтвердить что ты не робот

Почему я получаю эту ошибку в IE: "Область данных, переданная системному вызову, слишком мала"?

Я создаю файл csv для загрузки с помощью Javascript, и он отлично работает во всем, кроме 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);

Это связано с этим вопросом, но я начал новый, потому что у меня возникла другая ошибка после изменения некоторых вещей - Как мне создать и загрузить файл csv с помощью Javascript?

4b9b3361

Ответ 1

Это известная проблема, но есть обходной путь.

Добавьте следующий код

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

Источник

Ответ 2

В IE существует ограничение на размер URL.