2011-01-26 2 views
10

Это странно, я в шоке, я никогда не замечал этого раньше. Он работает так, если ваша мышь по-прежнему и div программно перемещается под мышью, событие mouseover не будет запускаться в chrome/safari - то же самое касается mouseout. Конечно, если вы слегка двигаете мышью, когда div перемещается под мышью, он будет работать так, как ожидалось.MouseOver MouseOut проблема в Safari/Chrome

Я создал demo on jsFiddle. Просто позвольте div осциллировать под мышью, отлично работает в firefox, а не в хроме или сафари, - еще предстоит проверить в ie.

Я склоняюсь к этому решению ... в основном качению собственного MouseEnter и MouseLeave события с помощью этого:

if (mouseX > divLeft && mouseX < divRight && 
    mouseY > divTop && mouseY < divBottom){ 
    // mouse is inside div 
} 

я говорю MouseEnter и уйти, потому что этот метод не будет иметь пузырьков

Мне было интересно, есть ли у кого-то еще мысли об этом ... У меня есть ощущение, что вокруг есть простой способ, но до сих пор Google ничего не изменил.

+1

Только что отмеченный - IE 7 не запускает «mouseover» или «mouseout», когда мышь по-прежнему. – jball

+0

+1, довольно интересно. Возможно, можно запустить событие с помощью javascript, проверив положение мыши при перемещении div. – JCOC611

+0

круто спасибо, я просто стрелял в VirtualBox, чтобы проверить – Zevan

ответ

3

https://bugs.webkit.org/show_bug.cgi?id=4117

Вы можете найти эту ошибку интересным.

+0

очень круто. Я предполагаю, что это просто ошибка ... Я немного подожду, чтобы посмотреть, есть ли какие-то другие решения, но я уверен, что буду отмечать это как правильный ответ. – Zevan

+0

Похоже, что вокруг этого метода нет другого способа, кроме той техники, о которой я упомянул в своем первоначальном вопросе, - я просто использовал это, и он отлично работает для того, что мне нужно. – Zevan