@Prescott

try catch IE8

Здрасте всем.

Расскажу предисторию. Надо открыть диалог выбора файла без щелкания мышкой со стороны пользователем. Но браузеры блокируют такие действия выдавая предупреждения, потому что по их политике безопасности действие выбора файлов должно быть инициировано пользователем. Ну я же честный человек и готов попросить юзера нажать enter, НО: ИЕ8 не разрешает давать фокус элементу типа файл. В то же время этот же ИЕ8 без проблем дает открывать окно по программному клику, отсюда родился код:

try {
gbid('file').focus(); //тем кто дает делать фокус
} catch (e) {
gbid('file').click(); //остальным кликаем
}


Но осел почему то выдает ошибку в консоли, при этом не обрабатывая catch. Как решить проблему? Проверять на ИЕ разных версий не хочу, интересует идеологическая сторона вопроса, должен же быть цивилизованный метод проверить поддерживается ли метод объектом в текущем браузере. Пробовал так
javascript:alert('focus' in document.getElementById('file')); //true
  • Вопрос задан
  • 2732 просмотра
Пригласить эксперта
Ответы на вопрос 1
@oraz_ra
Можно просто делать для всех сразу
gbid('file').click();

Проверял только в IE9 (в том числе в «режиме» IE8) и FF7
Проблема в другом: FF показывает полоску в верху с надписью «Firefox prevented this site from opening pop-up window» и предлагает лезть в опции. Возмажно, Вы уже отключили у себя эту опцию, но половина пользователей этого не сделали и вряд ли будут делать.
В IE скорей всего тоже такой же warning вылезет, просто у меня уже эта фигня похоже отключена.
В общем как ни крути, но броузеры рассматривают такие телодвижения как хаки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы