Могут ли события mouseover и mouseout быть несовместимы? - PullRequest
2 голосов
/ 13 ноября 2011

Я пытаюсь отследить, находится ли мышь внутри моего HTML-элемента или нет (примечание: у него также есть дочерние элементы).Тривиальное решение (которое я сейчас использую) состоит в том, чтобы прикрепить к mouseover / mouseout и сосчитать их - если есть больше " mouseovers " чем " mouseouts", тогда мышь должна быть внутри.

Но мне интересно - может ли это произойти?Может ли какое-либо из этих событий быть "пропущено" при некоторых (более или менее странных) обстоятельствах, оставляя меня с несоответствующим счетом?

Несколько простых испытаний не дали таких ситуаций, но тогда есть многокрайних случаев, и я не могу думать о них всех.Кто-нибудь когда-нибудь сталкивался с такой ситуацией?

Разъяснение: У меня не сталкивался с такой проблемой.Мне интересно, если такая проблема возможна или нет.

Добавлено: Случай только что пришел мне в голову - mouseover / mouseout на дочернем элементе, который не может пузыриться в его обработчике.Не случай для моего кода, но возможность все еще.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2011

Пузырьки, скорее всего, являются источником проблемы. Вы получаете событие mouseout, когда мышь перемещается во внутренний элемент. http://www.quirksmode.org/dom/events/mouseover.html

Предложение, используйте библиотеку. Они абстрагируют межбраузерные различия между событиями mouseenter и mouseleave, которые не всплывают. http://api.jquery.com/mouseenter/

Если вы не хотите использовать библиотеку, вам нужно проверить себя, находится ли мышь внутри элемента, который вы отслеживаете, прежде чем устанавливать счетчик. Если вы покажете свой код, вам будет проще показать, как его исправить.

0 голосов
/ 13 ноября 2011

У меня были подобные вещи .. сводил меня с ума.Я пришел к предположению / выводу, что, по крайней мере, в моем случае, это могло быть как-то связано с пузырями событий.Вы используете JQuery?Может быть, стоит перейти через несжатые библиотеки ... если вам действительно нужна гарантия.В противном случае, если ваш код достаточно гибок, вы можете обойти его ... что я и сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...