Отработка событий мыши в Mozilla при изменении отображения блоков

Рейтинг: 2Ответов: 1Опубликовано: 26.07.2023

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

По логике вещей в этот момент должен отрабатывать mouseover (т.к. между начальным блоком и курсором появился новый блок) и затем при движении мыши mousemove на втором блоке.

В Chrome всё так и работает, но вот в Mozilla Firefox не происходит отработка события mouseover, пока не отпустишь левую клавишу мыши и не сделаешь движение. Только после выполнение данных действий выполняется mouseover и затем сразу же move.

Попробовал задать вручную фокус на второй элемент через JS (.focus()) с помощью таймера и в CSS вынести отдельный цвет для элемент под фокусом, чтобы увидеть, что элемент действительно получил фокус. В результате второй элемент получил фокус (изменяет цвет по истечению таймера), однако mouseover всё равно не происходит.

Получается, что Mozilla отрисовывает блок, однако не видит, что данный элемент находится прямо под курсором. Кто-то сталкивался с подобной проблемой? Или есть мысли на что обратить внимание?

Ответы

▲ 0

Случайным образом было обнаружено, что при нажатии правой кнопки мыши все события отрабатывают нормально. Сформировано предположение: какой-то косяк в том, что он пытается выделять текст в первом контейнере не смотря на появление второго. Как следствие, создан был костыль: в момент клика мышью, отключаю у всех остальных элементов возможность выделять текст. Как это сделать можно к примеру посмотреть здесь: https://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting . В результате всё работает, хоть и выглядит страшно.