Javascript 保证onmouseout事件触发

Javascript 保证onmouseout事件触发,javascript,events,Javascript,Events,我目前正在开发一个web应用程序,遇到了一个小问题。我正在使用,但我相信这是一个普遍的问题 当光标进入HTML元素时,触发onmouseover事件,当光标离开该元素时,触发onmouseout。到目前为止,一切顺利。不幸的是,人们似乎不能完全依赖这种行为。非常快速的鼠标移动可能会导致事件不触发(例如,使用手写板重新定位光标) 处理这些问题的最佳做法是什么?我是否需要监视所有的onmousemove事件,并手动跟踪光标最后一次出现的位置,然后自己触发相应的onmouseout事件?我以前遇到过类

我目前正在开发一个web应用程序,遇到了一个小问题。我正在使用,但我相信这是一个普遍的问题

当光标进入HTML元素时,触发
onmouseover
事件,当光标离开该元素时,触发
onmouseout
。到目前为止,一切顺利。不幸的是,人们似乎不能完全依赖这种行为。非常快速的鼠标移动可能会导致事件不触发(例如,使用手写板重新定位光标)


处理这些问题的最佳做法是什么?我是否需要监视所有的
onmousemove
事件,并手动跟踪光标最后一次出现的位置,然后自己触发相应的
onmouseout
事件?

我以前遇到过类似问题,我使用过。当你用手写板重新定位光标时,这可能没有帮助,我没有一个可以检查的,但是如果你针对的是普通的网络用户,你可以假设这是一个不正常的情况。让我知道这是否有效——如果不行,我会看看是否能提供更多帮助


马丁

这是一个常见的问题,解决起来也不是小事。在单个元素级别处理mouseover/out基本上是不可能解决的。使用ExtJS,通常建议尽可能使用委托事件处理,这也有助于监视鼠标事件。例如,在尽可能高的级别上监视mouseover/out,并检查事件目标和/或相关目标(传递给处理函数的事件对象的属性),以确定在任何给定事件中涉及哪些元素(我自己也做过这件事——这可能会很棘手,但很有效)。如果您的用例正在监视有效的拖放场景,那么DragZone和DropZone类就是为此而设计的


如果你能详细介绍一下你要完成的任务,可能会有所帮助。

Hm,这是一篇有趣的文章。不过,我真的不明白这和我的问题有什么关系。毕竟,我参加的活动“太少了”,而不是太多。啊,是的,很抱歉,在我今天早上喝咖啡之前回答了这个问题。除非你自己动手,否则没有绝对的办法保证事件会发生。正如Konerak提到的,向页面添加一个侦听器,并检查它所针对的元素。我会在onmouseover方法中弹出当前元素,然后在onmouseout中弹出它,您需要编写一些逻辑来查看它是否在某个地方出错。不优雅,但应该有效。再次为我的困惑感到抱歉。我通过覆盖Ext.dd.DropZone.notifyOver并在遗漏mouseout事件时手动触发mouseout事件解决了这个问题。到目前为止似乎工作得相当可靠。