Тестировать, поддерживает ли браузер загрузку нескольких файлов? - PullRequest
3 голосов
/ 21 октября 2011

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

Я понимаю, что могу проверить пользовательский агент по списку известных браузеров, которые поддерживают эту функцию, но это выглядит довольно хрупкой реализацией (т.е.Если IE 10 поддерживает эту функцию, когда он, наконец, запускается, мне нужно будет отредактировать мой код).Я бы предпочел проверить поддержку этой функции напрямую.

Мысли?

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Я бы рекомендовал использовать "multiple" in document.createElement("input") для обнаружения функций.

3 голосов
/ 21 октября 2011

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

https://developer.mozilla.org/en/DOM/Input.multiple

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

1 голос
/ 19 июля 2014

В настоящее время нет надежного способа сделать это, о чем свидетельствуют тесты Вильями Салминена о поддержке загрузки файлов в мобильных браузерах (т. Е. Поддержка input type=file - не говоря уже о несколько загрузка файла).Его результаты показывают, что многие браузеры / устройства ложно сообщают о поддержке .

Что я подразумеваю под «нет надежного способа сделать это в настоящее время» в том, что мы неу этого списка есть ложное срабатывание, свойство HTMLInputElement.multiple.Очевидно, что список будет включать в себя все регулярное выражение ложных срабатываний для input type=file, но вероятно также будет включать дополнительные ложные срабатывания только для этой конкретной функции - следовательно, возможность обнаружения этой возможности ждетсистематический тест браузеров.

Временно вы можете использовать следующий тест, полностью основанный на коде Салминена, с добавлением одной строки (el.multiple = true;) и заменой xxx на регулярное выражение, упомянутое выше.

var isMultipleFileInputSupported = (function () {
    // Handle devices which falsely report support
    if (navigator.userAgent.match(/xxx/)) {
        return false;
    }
    var el = document.createElement('input');
    el.type = 'file';
    el.multiple = true;
    return !el.disabled;
})();

Пример использования:

if (isMultipleFileInputSupported) {
    console.log('multiple file input is supported');
} else {
    console.log('multiple file input is NOT supported');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...