как определить, поддерживается ли несколько атрибутов для элементов ввода файла?

Internet Explorer не поддерживает атрибут multiple для <input type="file" />. Однако не только в IE отсутствует эта поддержка... некоторые мобильные браузеры также не поддерживают атрибут multiple. Таким образом, простое определение того, что браузер IE, не является идеальным решением.

Итак, как мне определить, поддерживается ли атрибут multiple для <input type="file" /> с помощью JavaScript?

ОБНОВИТЬ

Похоже, что Modernizr поддерживает новые атрибуты элемента ввода HTML5:

http://modernizr.com/docs/#input

Однако принятое решение, похоже, работает, поскольку я уже использую Modernizr, мое решение следующее:

/**
 * Determines if the given attribute is supported for <input /> elements.
 * 
 * @param attribute - the attribute to test for (ex. "multiple")
 */
function isInputAttributeSupported(attribute) {
    return (Modernizr.input[attribute]) ? true : false;
};

person Hristo    schedule 05.05.2012    source источник


Ответы (2)


Вы можете попробовать проверить наличие соответствующего свойства:

var supportsMultipleFiles = 'multiple' in document.createElement('input');

Пример: http://jsfiddle.net/sbZvS/

person Jonathan Lonowski    schedule 05.05.2012
comment
Сначала я подумал, что код в вашем сообщении не работает в IE, но сейчас я его проверил, и он работает. Но когда я копирую и вставляю код из вашего поста, он вставляет в код невидимые символы. Я заметил их в Chrome в инструментах разработчика на вкладке "Источники": var supportsMultipleFiles = 'multiple' in ​document.​​​​​​createElement('input'); - person Hogan; 07.04.2013

person    schedule
comment
Я не думаю, что setAttribute поддерживается не во всех браузерах. - person Hristo; 05.05.2012
comment
Я могу ошибаться... но я думал, что старые версии IE не поддерживают setAttribute? - person Hristo; 05.05.2012
comment
И они не поддерживают несколько, так что это не имеет значения. - person epascarello; 05.05.2012
comment
@Hristo Похоже, что он просто шаткий с некоторыми атрибутами (в основном style), но метод все еще доступен. - person Jonathan Lonowski; 05.05.2012
comment
Возможно, вы захотите добавить удаление элемента после этого теста, нет причин оставлять его без дела. - person MgSam; 17.07.2012
comment
@MgSam Он не был добавлен в DOM. Это будет просто сборщик мусора, когда область действия функции выйдет. - person Danyal Aytekin; 25.10.2012