Как определить поддержку атрибута «загрузка» HTML5?

#javascript #html #jquery #download

#javascript #HTML

Вопрос:

Одной из новых функций, реализованных в HTML5, является download атрибут для тегов привязки. Преимущество этого атрибута в том, что он дает пользователям возможность загружать контент, созданный в клиентском приложении, например, изображение (преобразованное из холста, например).

В настоящее время поддержка этой функции очень слабая, поэтому я хотел бы знать, как я могу обнаружить поддержку этой функции в браузере.

Комментарии:

1. Для тех, кому интересно, эта функция активно поддерживается с 2022 года: caniuse.com/?search=download attribute a

Ответ №1:

Используйте подход Modernizr: создайте элемент и проверьте, определен ли атрибут:

 var a = document.createElement('a');
if (typeof a.download != "undefined") {
    alert('has support');
}
  

Комментарии:

1. Или короткая версия var downloadAttrSupported = ("download" in document.createElement("a"))

2. Я предложил включить сам Modernizr, но это действительно может быть лучше, если это для одного единственного случая использования.

3. @dbaseman На самом деле, «undefined» — это стандартная реализация. Насколько мне известно, ничего другого нет, поэтому проверка того, является ли «(typeof X == ‘undefined’)» или нет, — это правильный путь. В любом случае, большое спасибо за ответ! Это решило мою проблему 🙂

4. Похоже, что это решение больше не работает; современные версии Firefox, похоже, имеют a.download defined, но не используют его.

5. @McGarnagle: использование консоли в Firefox 26 для выполнения document.createElement('a').target возвращает пустую строку на моем Mac, а не «неопределенную». Я пытаюсь загрузить URL-адрес данных, так что, вероятно, он не подпадает под категорию «того же происхождения»…

Ответ №2:

Однострочное if условие для упрощения:

 if (document.createElement('a').download==undefined amp;amp; e.target.hasAttribute('download'))
{
 e.preventDefault();
 console.log('Error: this is a download link, please right-click to save the file.');
}
  

Поддержка download атрибута неоднородна (Chrome 14 , Firefox 20 , IE13 , Safari 10 и нет поддержки в (реальной) Opera. Приведенный выше сценарий не будет мешать работе поддерживаемых браузеров.