Обновление iOS до 10.3.1 разбивает элемент ввода HTML

У нас есть сайт, который используется преимущественно iPads в поле (не приложение, рассчитанное на использование на iPad), и, по-видимому, обновление, которое только что появилось, вызывает проблемы со входом. У нас есть ввод HTML, который позволяет им выбирать из сохраненных изображений:

        <input class="fileInput" type="file" name="file" accept="image/*" capture>

И теперь он открывает камеру только без возможности использования рулона. Это что-то еще кто-то видел? Есть ли способ обхода?

Спасибо, Джеймс

Ответ 1

Он только открывает камеру, потому что вы используете логический атрибут capture. Согласно Спецификация HTML Media Capture:

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

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

Термин механизм захвата носителя относится к локальному устройству захвата данных устройства, например, к камере или микрофону.

В вашем случае лучше использовать <input> без capture, в соответствии с спецификацией HTML, кажется, что опция выбора общее поведение браузера:

Пользовательские агенты могут использовать значение этого атрибута (accept) для отображения более подходящего пользовательского интерфейса, чем общий сборщик файлов. Например, с учетом значения image/*, пользовательский агент может предложить пользователю возможность использовать локальную камеру или выбрать фотографию из своей коллекции фотографий;

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

На мой взгляд, это изменение iOS в 10.3.1 является исправлением для управления вводом файлов. В противном случае не было бы различия с атрибутом capture или без него.

Ответ 2

Я отлаживал эту проблему. Я полностью удалил атрибут захвата, например, предложенный shaochuancs, и решил проблему неспособности выбрать камеру или рулон камеры в iOS 10.3.1.