保证onmouseout事件开火

时间:2010-05-07 10:06:12

标签: javascript events

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

当光标进入HTML元素时,会触发onmouseover事件,当光标离开该元素时,会触发onmouseout。到现在为止还挺好。不幸的是,似乎人们不能完全依赖这种行为。非常快速的鼠标移动可能导致事件无法触发(例如,使用数位板重新定位光标)。

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

2 个答案:

答案 0 :(得分:3)

之前我遇到过类似的问题而且我使用了this technique。当您使用数位板重新定位光标时,这可能没有帮助,我没有一个可以检查其他情况,但如果您的目标是普通网络用户,您可以认为这是一个异常情况。让我知道如果有效 - 如果没有,我会看看我是否可以提供更多帮助。

马丁

答案 1 :(得分:3)

这是一个常见问题,并不容易解决。通过尝试在单个元素级别处理鼠标悬停/输出基本上是不可能的。使用Ext JS,通常建议尽可能使用委托事件处理,这也有助于监视鼠标事件。例如,在最高级别监视鼠标悬停/输出,并检查事件目标和/或相关目标(传递到处理函数的事件对象的属性),以确定在任何给定事件期间涉及哪些元素(我已经完成)我自己 - 它可能变得棘手,但它是有效的)。如果您的用例正在监视有效的拖放方案,则DragZone和DropZone类旨在执行此操作。

如果您可以填写有关您要完成的内容的更多详细信息,则可能有所帮助。