Bug Tracker

Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#9724 closed bug (fixed)

Infinite loop in trigger function when window.parentNode is a DOM element

Reported by: anonymous Owned by: dmethvin
Priority: low Milestone: 1.7
Component: event Version: 1.6.1
Keywords: Cc:
Blocked by: Blocking:

Description

The code at fault is:

cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;

The cur variable walks the DOM tree, then becomes the Document object en then the window object. When window has a parentNode variable, an infinite loop starts.

Forgetting to declare a temporary parentNode variable so it ends up in the window object is a client programmer error, but jQuery should not choke on it.

Change History (4)

comment:1 Changed 12 years ago by dmethvin

Component: unfiledevent
Priority: undecidedlow
Status: newopen

Hmmm, good point. We are using another browser sniff for a setInterval property to determine if something is a window, we can check for that, or perhaps checking for cur.nodeType===1 would be better.

In the meantime, don't declare a global with the name parentNode!

comment:2 Changed 12 years ago by dmethvin

To continue my internal dialog, we don't want to check for .nodeType===1 because someone may be depending on plain objects to bubble ... not that we formally support it, but I discussed the possibility with Yehuda a few months back. So a window test may be our best bet.

comment:3 Changed 12 years ago by dmethvin

Milestone: 1.next1.7
Owner: set to dmethvin
Status: openassigned

comment:4 Changed 12 years ago by dmethvin

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.