Возможно, мой Google-фу сегодня действительно плохой, но я не смог найти объяснения этому странному поведению, которое я заметил.
У меня есть событие mousemove
слушателя на родительский узел, но иногда event.target
является дочерним узлом. На Chrome (v79, а также на удивление Safari) значение event.offsetX/Y
является неизменным, независимо от того, является ли цель узлом root или дочерним узлом. В Firefox (v72.0.1) и Edge event.offsetX/Y
внезапно оказывается относительно дочернего узла, если дочерний узел является целью. Это отбрасывает мою функцию обработки событий, так как для нее требуется положение мыши относительно узла слушателя root.
Я смотрел на использование event.layerX/Y
, что последовательно аналогично offsetX / Y на родительский узел, но не всегда равный, когда он является дочерним узлом.
Я не могу обмануть и использовать CSS pointer-events:none
, потому что у меня все еще есть обработчики щелчков на этих дочерних узлах.
Есть ли простой способ гарантировать, что event.target - это узел, на котором я установил прослушиватель событий, или всегда получать положение мыши относительно родительского / слушающего узла?