Input ['file'] accept = "image/*" открыть диалог так медленно с Chrome

Когда я использую <input type="file" accept="image/*"/> с Chrome, он очень медленно открывает диалог (более 10 секунд на Mac 10.11.6 с Chrome 52.0.2743.116 64-бит).

Но когда я удаляю accept="image/*", он становится правильным. И я смотрю на свою страницу в Facebook, она отлично работает. Что другое?

Facebook input

Загрузка изображения с переполнением стека также становится настолько медленной с моим Chrome.

Переполнение стека

Что происходит с моим Chrome? Ive проверил другие Chrome, его ОК...

Ответ 1

UPDATE в июле 2017:. Это подтверждено как bug в Chrome, и это исправлено.

Основная причина этой ошибки: функция Chrome SafeBrowsing проверяет файл при загрузке или сохранении. Если интернет-соединение с сервером google выполняется быстро, это нормально. Но если соединение медленное или сломанное, SafeBrowsing заставит Chrome зависать в течение нескольких секунд, пока проверка не завершится или не будет завершена.

Использование accept="image/png, image/jpeg, image/gif" будет обходить эту проблему, поскольку типы MIME image/png, image/jpeg, image/gif находятся в белом списке SafeBrowsing - проверка не требуется. Однако для accept="image/*" или accept=".apk", поскольку это не в белом списке, SafeBrowsing вызовет проверку и повесил Chrome.

Эта ошибка была исправлена ​​, пропустив проверку при загрузке.

Примечание. Я получаю приведенную выше информацию от китайской статьи, написанной Ван Лэй, вдохновленной ответом @cute_ptr. Спасибо Ван Лэй, и я думаю, что ответ @cute_ptr заслуживает поддержки.


ОБНОВЛЕНИЕ: благодаря комментарию @xiefei окончательный вариант будет выглядеть следующим образом: <input type="file" name="imgFile" accept="image/png, image/jpeg, image/gif">. При необходимости могут быть добавлены другие типы изображений MIME.


Эта ошибка воспроизводится на моей машине: Mac + Chrome + <input type="file" accept="image/*">. Это похоже на ошибку Chrome на Mac, когда используется атрибут accept, поскольку он не воспроизводится в среде Windows или в других браузерах.

Ответ 2

Думаю, я, возможно, нашел причину, по крайней мере на моей машине:

Когда мое подключение к Интернету включено, оно быстро открывает диалоговое окно файла, когда я его выключу, оно медленное, затем я включаю его снова и снова быстро.

Поэтому попробуйте открыть диалоговое окно файла, когда включено подключение к Интернету, и посмотрите, есть ли разница. Это сработало для меня.

Ответ 3

Из лучшего ответа мы знаем, что это хром-ошибка и готова к исправлению. До сегодняшнего дня (2017/08/23) хром 60.0.3112.101 еще не исправил эту ошибку. Однако последняя хромовая канарейка (62.0.3194.0) зафиксировала ее.