#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
Component: | unfiled → event |
---|---|
Priority: | undecided → low |
Status: | new → open |
comment:2 Changed 12 years ago by
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
Milestone: | 1.next → 1.7 |
---|---|
Owner: | set to dmethvin |
Status: | open → assigned |
comment:4 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Trigger was refactored and fixed here: https://github.com/jquery/jquery/commit/ecd10464e8659b008e52161cc029f9d6863e33b3
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 forcur.nodeType===1
would be better.In the meantime, don't declare a global with the name
parentNode
!