Почему capture = "user" не меняет камеру телефона на лицевую сторону?
Я попробовал следующий атрибут capture
чтобы установить элемент input
чтобы попытаться выбрать фронтальную камеру. user
обращен вперед, а environment
обращена назад.
Однако во время экспериментов с Chrome (последняя версия) на мобильных устройствах (Pixel 1, последняя версия ОС) задняя камера по-прежнему выбрана.
Я использовал пример фрагмента:
<form action="server.cgi" method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" capture="user">
<input type="submit" value="Upload">
</form>
(из https://w3c.github.io/html-media-capture/#the-capture-attribute)
Я могу изменить accept
чтобы требовать video
на моем телефоне, чтобы и другие атрибуты работали, но не атрибут capture
.
РЕДАКТИРОВАТЬ: Я использую последний браузер Android Chrome. На следующей странице подразумевается, что iOS и более ранние версии Android Chrome не могут использовать capture
вообще, но в противном случае могут использовать capture
. https://caniuse.com/#search=html-media-capture
Ответы
Ответ 1
Я сегодня клонировал хранилище хрома (2019-07-21). Затем я использовал ripgrep, чтобы получить список файлов, которые не содержат capture
. После передачи этого списка в rm
я удалил все каталоги, которые были либо пустыми, либо явно не относились к делу (например, телеметрия). Просматривать оставшиеся ~ 50 файлов было относительно тривиальной задачей.
Надеемся, что команда Chrome сможет реализовать это в будущем, но в настоящее время нет никаких признаков того, что это поведение поддерживается в официальной документации, официальных сообщениях в блоге или самом коде.
Я знаю, что это не тот ответ, который вы хотели бы услышать, но это факты, которые я нашел.
Ответ 2
Будет ли Chrome специально препятствовать правильной работе кода? Я предлагаю использовать другой браузер, такой как Firefox, чтобы проверить эту теорию. Если это удастся в Firefox, то простой ответ: Chrome еще не реализовал его.
Ответ 3
Смотрите 5. Атрибут захвата:
Когда указан атрибут захвата:
- пользовательский агент ДОЛЖЕН вызывать средство выбора файлов определенного типа управления захватом.
- Пользовательский агент НЕ ДОЛЖЕН сохранять захваченный носитель в любое хранилище данных, локальное или удаленное.
Ответ 4
Вот несколько тестов, я включил пользовательский агент:
Не работал с:
- Android Chrome: Mozilla/5.0 (Linux; Android 6.0; Ilium X510) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36
- Android Firefox: Mozilla/5.0 (Android 6.0; Мобильный; rv: 68.0) Gecko/68.0 Firefox/68.0
Работал с :
- IPhone Chrome: Mozilla/5.0 (iPhone; процессор iPhone OS 12_3, как Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) CriOS/75.0.3770.103 Mobile/15E148 Safari/605.1
- IPhone Safari: Mozilla/5.0 (iPhone; процессор iPhone OS 12_3_1, как Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) Версия /12.1.1 Mobile/15E148 Safari/604.1
В итоге:
- Все протестированные навигаторы iPhone отображали вид спереди камеры, когда захват сделан пользователем, и вид сзади камеры, если это среда.
- Оба протестированных Android-навигатора всегда отображали вид сзади камеры.
Таким образом, независимо от информации в принятом ответе, это не проблема браузера. Было бы полезно, если бы он работал правильно с устройством Android и конкретным браузером.
Я надеюсь, что другие люди смогут делиться тестами на своих устройствах Android, в частности на рабочих, отображая вид с передней камеры при тестировании значения атрибута capture = "user".