Как я могу проверить, поддерживает ли браузер webkitdirectory?

Я использую функцию загрузки папки Google Chrome в своем проекте, описанную здесь: Как использовать функцию загрузки папки Google Chrome 11 в моем собственном коде?

У меня есть кнопка, которая вызывает поле ввода при нажатии. Мой вопрос: как я могу проверить, поддерживает ли браузер webkitdirectory или нет? поэтому я могу скрыть свою кнопку или предупредить пользователя об использовании хрома для этой службы.

<button>Upload Folder</button>
<input type="file" name="file[]" multiple webkitdirectory>

<script>
  $("button").click(function(e) {
    /* TODO: Detect webkitdirectory support */
    if(webkitdirectory)
      $('input').trigger('click');
    else
      alert('Use Chrome!');
  });
</script>

person Hafez Divandari    schedule 31.08.2014    source источник
comment
Модернизр можно попробовать. Похоже, они реализовали проверку для этого пару лет назад github.com/Modernizr/Modernizr/issues /674 В противном случае ознакомьтесь со следующим сообщением stackoverflow.com/questions/12169585/   -  person no1spirite    schedule 31.08.2014
comment
Я использовал github.com/DamonOehlman/detect-browser. Я не создатель, но я наслаждайтесь этим, потому что он легкий и делает именно то, что вы ищете. При использовании в сочетании с caniuse.com/#feat=input-file-directory делает вещи довольно простыми.   -  person Weeks    schedule 09.08.2018


Ответы (2)


На основе Modernizer и этот ответ Я мог бы использовать эту функцию, чтобы определить, поддерживается ли выбор каталога:

function testFileInputDirectory() {
    var elem = document.createElement('input'),
    dir = 'directory',
    domPrefixes = [ "", "moz", "o", "ms", "webkit" ],
    prefix;

    elem.type = 'file';

    for (prefix in domPrefixes) {
      if (domPrefixes[prefix] + dir in elem) {
        return true;
      }
    }
    return false;
}
person Hafez Divandari    schedule 09.05.2019

Чтобы узнать, поддерживается ли webkitdirectory, проверьте свойство в элементе ввода:

webkitdirectorySupported(){
  return 'webkitdirectory' in document.createElement('input')
}
person Kim Nyholm    schedule 26.02.2020