#javascript #angularjs
#javascript #angularjs
Вопрос:
Я написал ниже код для загрузки файла. Он работает для ограниченной записи. теперь количество моих записей превышает 12000. Затем браузер зависает, а файл не загружается
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var edgetype = ua.indexOf("Edge");
var blobObject;
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv:11./)) {
expExcelIframe.document.open("txt/html", "replace");
expExcelIframe.document.write(html);
expExcelIframe.document.close();
expExcelIframe.focus();
expExcelIframe.document.execCommand("SaveAs", true, fileName);
}
else if (edgetype > 0) {
blobObject = new Blob([html]);
window.navigator.msSaveOrOpenBlob(blobObject, fileName);
}
else {
window.open('data:application/vnd.ms-excel,' encodeURIComponent(html));
}
Комментарии:
1. Любой альтернативный код для сохранения файла в формате Excel
2. Почему вам нужен альтернативный метод? Что не так с этим методом?
3. В каком случае сбой? msie, EdgeType или другое?
4. если количество записей превышает тысячу, это занимает больше времени, и браузер зависает
Ответ №1:
Заменить encodeURIComponent
:
МЕДЛЕННО
window.open('data:application/vnd.ms-excel,' encodeURIComponent(html));
Лучше
var blob = new Blob([html],{type: 'data:application/vnd.ms-excel' });
var u = URL.createObjectURL(blob);
window.open(u);
Это позволяет избежать этапа преобразования в base64, требующего больших затрат памяти и вычислений.
Комментарии:
1. Спасибо за ваш ответ, но теперь я получаю сообщение «Ошибка: доступ запрещен». Не могли бы вы предложить это.