Случайно наткнулся на неприятную проблему в Opera, которая существовала ещё в версии 9.64 (а может и в более ранних, просто это самая старая версия, которая у меня имелась), и существует до сих пор (в версии 11.51 - последней имеющейся у меня на момент написания статьи).
Исходный замысел был в полном раскрытии опций тега select при попадании на него фокуса с помощью изменения атрибута size и возврате в исходное состояние при потере фокуса (<select onfocus="this.size=this.options.length" onblur="this.size=1">). Опере такие манипуляции решительно не понравились.
Собственно демонстрация проблемы - попробуйте переключаться между полями кнопкой Tab и выбирать значения select стрелками вверх/вниз.
Во всех проверенных браузерах (IE 8, Firefox 3.6-7, Chrome 14 и т.д.) навигация и выбор значений проходят нормально, и только в Opera пачками валятся косяки:
Исходный замысел был в полном раскрытии опций тега select при попадании на него фокуса с помощью изменения атрибута size и возврате в исходное состояние при потере фокуса (<select onfocus="this.size=this.options.length" onblur="this.size=1">). Опере такие манипуляции решительно не понравились.
Собственно демонстрация проблемы - попробуйте переключаться между полями кнопкой Tab и выбирать значения select стрелками вверх/вниз.
Во всех проверенных браузерах (IE 8, Firefox 3.6-7, Chrome 14 и т.д.) навигация и выбор значений проходят нормально, и только в Opera пачками валятся косяки:
- При попадании на подопытный select он раскрывается, как и задумано, но пунктирный outline со списка опций пропадает, и выбрать опцию с клавиатуры стрелками вверх/вниз становится невозможно.
- При нажатии Tab фокус уходит на следующее поле, но обработчик onblur не срабатывает (никакого события blur).
- Если сейчас нажать Shift-Tab, мы вернёмся на select, но теперь он уже реагирует на выбор опций с клавиатуры, и корректно теряет фокус (событие blur происходит, обработчик onblur вызывается и сворачивает select).
- Аналогично происходит получение/потеря фокуса при работе мышкой: при первом клике select получает фокус и разворачивается, но управляться с клавиатуры и признавать потерю фокуса не желает, зато при повторном клике слушается как положено. Потом круг замыкается, и всё начинается сначала: первый клик - глючный, второй - нормальный.
Комментариев нет:
Отправить комментарий