У меня была такая же проблема с IE (включая IE 9).Логика пользовательского интерфейса:
- нажатие на элемент
div
вызывает событие click
на file-input-element
, так что пользователь нажимает на div
диалоговое окно открытия триггерного файла - привязать обработчик событий
change
к file-input-element
, чтобы обеспечить отправку form
при закрытии диалогового окна открытия файла
Приложение (работающее внутри iframe) работает как Charm в Chrome иFF.Но вскоре я обнаружил, что он не работает в IE, так как когда пользователь выбирает файл и закрывает диалоговое окно, форма не отправляется.
Окончательное решение - сбросить логику # 1 ", нажмите на div
Элемент запускает click
событие на элементе ввода файла "и позволяет пользователю щелкнуть file input element
напрямую, и тогда он работает.
Кстати, причина, по которой у нас есть элемент div
, заключается в том, что мы хотим скрытьбраузер отображал элементы управления, потому что у нас есть все на фоновом изображении.Однако установка display
в none
делает элемент управления не способным отвечать на события взаимодействия с пользователем.Поэтому мы перемещаем file-input-element
за пределы порта просмотра и используем элемент div
для его замены.Так как в IE это не работает, в итоге мы возвращаем file-input-element
и устанавливаем его opacity
в 0. В IE 8 или менее, который не поддерживает opacity
, мы используем фильтр, чтобы сделать его прозрачным:
#browse {
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
filter: alpha(opacity=0);
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
}