Я настраиваю новое веб-приложение для загрузки XML-файла и хочу предоставить ссылку для загрузки XML-файла на стороне клиента с помощью Javascript.
Согласно caniuse.com (https://caniuse.com/#search=download), Safari> 10.1 поддерживает атрибут загрузки. К сожалению, это не работает в случае Safari по сравнению с другими браузерами, такими как Chrome, Firefox. В основном после нажатия на элемент href переходит на следующий экран и загрузка не происходит.
Для этой цели я написал следующий скрипт href.
var link = document.createElement("a");
link.download = filename;
link.target = "_blank";
// Construct the URI
link.href = DOWNLOAD_URL;
document.body.appendChild(link);
link.click();
// Cleanup the DOM
document.body.removeChild(link);
Чтобы заставить это работать для того, что я сделал, добавили тайм-аут на событие щелчка, как показано в коде ниже, и он начал работать. Пожалуйста, проверьте -
var link = document.createElement("a");
link.download = filename;
link.target = "_blank";
// Construct the URI
link.href = DOWNLOAD_URL;
document.body.appendChild(link);
setTimeout(function() {
link.click();
// Cleanup the DOM
document.body.removeChild(link);
DOWNLOAD_COMPLETED = true;
document.getElementById('nextButton').onclick();
}, 500);
Что я хочу понять, почему сафари ведет себя иначе, чем в других браузерах. Похоже, что внутренняя реализация атрибута загрузки в Safari в некоторой степени асинхронна
Я делаю ошибку в моем сценарии загрузки? Вы можете мне помочь? Большое спасибо!