Re: a minor confusion concerning mouse events

On 09/12/2011 01:46 AM, Tab Atkins Jr. wrote:
> On Sun, Sep 11, 2011 at 9:44 PM, Olli Pettay<Olli.Pettay@helsinki.fi>  wrote:
>> On 09/10/2011 09:49 AM, Tab Atkins Jr. wrote:
>>> IE exposes the much more useful (non-bubbling) mouseenter and
>>> mouseleave events,
>>
>> mouseenter/leave are perhaps useful, but easily quite slow, since they
>> need to be fired a lot more often.
>
> Hm, this doesn't make sense to me.  Ignoring any optimizations based
> on registration, it seems like enter/leave are still fired *less* than
> over/out.  over/out get fired on *every* transition between elements.
Right, when mouse moves from top of some element to top of some other
element, there is mouseout/mouseover

> You'll often only fire one of enter/leave on a given transition,
> though.

... but if the DOM is deeply nested, you need to fire mouseleave for
each element the mouse is "leaving" and for each element the mouse is
entering.



>
> One detail I'm not sure of without testing (which I can't do right now
> on this Linux laptop) is a situation like, for example, two elements
> each nested deeply in different branches, but placed next to each
> other.  Presumably mousing from one to the other would fire mouseleave
> events all the way up to their common node, and then mouseenter events
> all the way back down.  I'm not sure if mouseover/out would do the
> same or if they'd only fire once each.


there is only one mouseover/out, but several mouseenter/leave events.

>
> (In any case, I imagine that non-bubbling events are amenable to more
> aggressive registration-based pruning, right?  You can just keep a
> record of what nodes have listeners, and make a quick check before
> attempting to fire.)

You can optimize out some event dispatching when there are no
listeners, but if you for example have a capturing event listener in
window or document, your mouseenter/leave
listener would be called possibly a lot more often than
mouseout/over.




-Olli


>
> ~TJ
>
>

Received on Monday, 12 September 2011 14:23:25 UTC