JavaScript: событие onMouseOver не работает должным образом с другими событиями

У меня есть веб-страница HTML, содержащая таблицу 15x15, и у меня также есть небольшой квадратный div, который следует за мышью, когда вы нажимаете и удерживаете левую кнопку мыши на div.

Я назначил событие onmouseover таблице 15x15, чтобы при наведении указателя мыши на ячейку переменная с именем «gridPlacement» устанавливала значение уникального идентификатора ячейки таблицы, над которой наведена мышь.

Событие onmouseover, кажется, работает нормально, и сразу же, как только вы наводите курсор на ячейку, переменная gridPlacement устанавливается на идентификатор ячейки.

Но когда запускаются события onmousedown и onmousemove (когда мышь нажимает и удерживает левую кнопку мыши на div, о котором я упоминал ранее), иногда, когда вы наводите курсор на ячейку, переменная gridPlacement не устанавливается, а иногда вам нужно наведите указатель мыши на ячейку несколько раз, чтобы она заработала.

Кажется, что события onmousedown и onmousemove влияют на событие onhover на моем столе 15x15.

Кто-нибудь знает, почему это происходит и как я могу обойти эту проблему?

Надеюсь, вы меня понимаете, я постарался как можно лучше объяснить свою проблему.

ПРОБЛЕМА РЕШЕНА!

Изменение смещения элемента, который перетаскивает пользователь, помогло, спасибо всем за помощь! :)


person AlexPriceAP    schedule 19.02.2011    source источник
comment
Можете ли вы разместить ссылку, иллюстрирующую проблему?   -  person dionyziz    schedule 19.02.2011
comment
Я разрабатываю локально, извините!   -  person AlexPriceAP    schedule 19.02.2011
comment
@AlexPriceAP: вы можете воспроизвести свою проблему с помощью jsfiddle.net   -  person Felix Kling    schedule 19.02.2011
comment
Так вы имеете в виду, что onmousedown + onmousemove + onhover влияет на переменную, устанавливаемую при наведении? Если так, то для меня это имеет большой смысл, поскольку современные браузеры, как правило, стараются много «перетаскивать» контент (выделенный текст, страница / вкладка / документ), который вы не написали в сценарии.   -  person    schedule 20.02.2011
comment
@D_N: Нет, сама переменная не затронута, событие onmouseover для таблицы, похоже, затронуто и не работает должным образом, когда запущено событие onmousemove :(, ну, я думаю, что onmousemove все равно влияет на него, или, может быть, это потому, что мышь неправильно зависает над таблицей? Но если это так, как я могу заставить его думать, что мышь парит над таблицей, а не над div, который я перетаскиваю?   -  person AlexPriceAP    schedule 20.02.2011
comment
@AlexPriceAP, на данный момент я думаю, что было бы большим подспорьем поместить соответствующий код в ваш вопрос, чтобы мы могли его воспроизвести (вы можете получить больше ответов, разместив его также на jsFiddle.net, как предложено выше).   -  person    schedule 20.02.2011


Ответы (2)


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

Надеюсь это поможет.

person zdyn    schedule 19.02.2011

Проблема, о которой вы спрашивали, возникает из-за того, что когда вы нажимаете кнопку, div находится под вашей мышью, поэтому вы фактически не наводите курсор на ячейку (по крайней мере, это то, что я получил из вашего описания). Обходным путем было бы установить желаемую переменную при выходе из определенной ячейки (onmouseout), но это вам не поможет, так как я думаю, вы хотите знать, что над ячейкой ведьмы вы закончили, поэтому я думаю, вы можете получить положение мыши и сравнить ее к положению ячеек ... если вы не получите лучшего ответа, потому что это вроде ... не так просто.

person zozo    schedule 19.02.2011