#6705 closed bug (patchwelcome)
focus() causes focus event to be handled twice in IE8
Reported by: | easyTree | Owned by: | dmethvin |
---|---|---|---|
Priority: | high | Milestone: | 1.next |
Component: | event | Version: | 1.6.4 |
Keywords: | ie6 ie7 ie8 | Cc: | |
Blocked by: | Blocking: |
Description
Attaching a handler for the focus event to an input/text then focusing the field using focus() causes the handler to run twice in IE8. In firefox, behavior is as expected
Attached is a a simple html page demonstrating the bug.
Attachments (1)
Change History (16)
Changed 13 years ago by
comment:1 Changed 13 years ago by
Component: | unfiled → event |
---|
comment:2 Changed 13 years ago by
Priority: | → undecided |
---|---|
Status: | new → open |
Not sure what can be done to fix it, but this was also observed by Scott González.
comment:4 Changed 12 years ago by
Blocked by: | 6593 added |
---|---|
Milestone: | → 1.next |
Priority: | undecided → high |
I think this is actually very similar to #6593. We're working to try and fix the problem over there for the change event.
comment:5 Changed 12 years ago by
Blocked by: | 6593 removed |
---|---|
Milestone: | 1.next → 1.7 |
Owner: | set to dmethvin |
Status: | open → assigned |
Confirmed: http://jsfiddle.net/dmethvin/gsJyE/
This appears to be fixed in my 1.7 branch, I'll confirm once it lands.
comment:6 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:7 Changed 12 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I had to back out this fix, among other things it was causing focus/blur handlers to not run in cases where the focus/blur method didn't feel they should be fired -- for example, if the element was already focused.
comment:8 Changed 12 years ago by
Milestone: | 1.7 → 1.next |
---|---|
Status: | reopened → open |
Version: | 1.4.2 → 1.6.4 |
comment:9 Changed 11 years ago by
Keywords: | ie6 ie7 added; focus trigger removed |
---|
comment:10 Changed 11 years ago by
Resolution: | → patchwelcome |
---|---|
Status: | open → closed |
I can't think of acceptable solutions that can be implemented at the core level. At present we can either choose to execute the focus handlers either 0-or-1 times (my abandoned patch above) or 1-or-2 times (the current behavior) depending on circumstances, and ensuring that they are run at *least* once seems better than having them not run at all in some cases.
comment:11 Changed 11 years ago by
FWIW, I've talked to Microsoft about this and they don't have an explanation as to why they handle focus asynchronously. They're going to look into making it synchronous for web compat, but that won't happen until after IE10 ships...
comment:13 Changed 11 years ago by
I had this problem in IE. I used preventDefault() and it stopped the double click for my situation.
comment:14 Changed 11 years ago by
Hi, we solved this problem using standard focus method of dom element instead of jquery method.
comment:15 Changed 11 years ago by
@olegku, yes that will sort of work, but note that it will not fire the focus event handlers at all if the element is already focused.
Demonstrates that focus handler fires twice when triggered using 'focus()'