Возникла необходимость реализовать скачивание изображений при клике по ссылке.
К счастью, в спецификации HTML5 появился новый атрибут download
, указывающий браузеру на то, что ресурс по ссылке следует скачать. К несчастью, этот атрибут не поддерживается в Сафари и IE.
Для IE удалось найти относительно простое альтернативное решение, основанное на блобах:
document.querySelector('a[download]').addEventListener('click', (event) => {
// следующий код сработает только в IE10+
if (navigator && navigator.msSaveOrOpenBlob) {
event.preventDefault();
const href = event.target.href;
const xhr = new XMLHttpRequest();
xhr.open('GET', href, true);
xhr.responseType = 'blob';
xhr.onload = () => {
const filename = href.replace(/^.*\//g, '');
return navigator.msSaveOrOpenBlob(xhr.response, filename);
};
xhr.send();
}
});