Как стать автором
Обновить

Неприятный глюк Mozilla Firefox 3 c position:fixed

Время на прочтение1 мин
Количество просмотров1.6K
При реализации механизма Drag&Drop для сайта столкнулся со странным глюком. Иногда не отрабатывались события мыши при drop'e. При этом, глюк был не постоянный, что затрудняло его отладку.

После тщательного разбора ситуации, удалось выявить закономерность: если зажать клавишу мыши, затем, в таком состоянии, передвинуть мышь на слой, у которого в CSS установлен position: fixed — события мыши над этим слоем не отрабатываются вобще. Ситуация показалась мне очень странной. Ещё раз всё тщательно проверив, я отписал багрепорт в Mozilla (https://bugzilla.mozilla.org/show_bug.cgi?id=449579). Там же есть тесткейс этого глюка. Глюк подтвердили, но он до сих пор не исправлен.

Данная ситуация не даёт возможности сделать drop на область с position:fixed не прибегая к извращениям.

Для себя я применил следующее решение:
  1. При начале драга устанавливаем все слои у которых position:fixed в position:absolute с учётом координат на странице и положения полос прокрутки.
  2. Выполняем drop
  3. Возвращаем position:fixed

Всё это время нужно следить за положением полос прокрутки и если оно изменилось перетащить слои т.к. пользователь может крутонуть колёсико мышки или прокрутить страницу иным способом. К сожалению, при этом возникают мелькания, от которых пока избавиться не удалось. Но, к счастью, такая ситуация довольно редкая.
Теги:
Хабы:
Всего голосов 26: ↑23 и ↓3+20
Комментарии43

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань