#15197 closed defect (fixed)
Rapidly clicking on DateTextBox in IE 8 throws error pop up message "Can`t move focus to the control because it is invisible... dojo.js"
Reported by: | kumarann | Owned by: | bill |
---|---|---|---|
Priority: | undecided | Milestone: | 1.8 |
Component: | Dijit - Form | Version: | 1.6.1 |
Keywords: | Cc: | Douglas Hays | |
Blocked By: | Blocking: |
Description (last modified by )
Steps to reproduce the error
1) Create a simple html page containing DateTextBox control.
2) Open the page in IE 8.
3) Rapidly click (3-4 clicks) on the date text box.
It throws up an error pop up with message "Can't move focus to the control because it is invisible... dojo.js"
Attachments (4)
Change History (15)
Changed 10 years ago by
Attachment: | hello.html added |
---|
comment:1 Changed 10 years ago by
comment:2 Changed 10 years ago by
Owner: | changed from Douglas Hays to bill |
---|---|
Status: | new → assigned |
Hard to recreate but definitely possible (eventually). CalendarLite?._setCurrentFocusAttr contains
newCell.focus();
but that isn't protected by a try/catch. Also I'm not sure if focus should be changed then or should have been deferred until the event handler finishes.
comment:3 Changed 10 years ago by
I think it's another problem with timeouts, specifically that:
- the drop down is opened
- a focus timer is set
- the drop down is closed
- the focus timer fires
It's hard to confirm though since this problem is so intermittent. Could one or both of you try attachment:focusCloseRaceConditionFix.patch to see if it fixes the problem for you?
comment:6 Changed 10 years ago by
Milestone: | tbd → 1.8 |
---|
comment:8 Changed 10 years ago by
In the _HasDropDown.js line number 141 contains window.setTimeout(dojo.hitch(dropDown, "focus"), 1); but in the fix, this.defer has been used. It is not working with my code.
Changed 10 years ago by
Attachment: | testhtml.html added |
---|
comment:9 Changed 10 years ago by
this.defer() was added in trunk, for dojo 1.8. Apparently you are trying to use the _HasDropDown.js from trunk against dojo 1.6.1. This is not expected to work.
comment:10 Changed 10 years ago by
This issue occurs in Dojo version 1.7.2, do you have patch or fix for that version too
comment:11 Changed 10 years ago by
Description: | modified (diff) |
---|
No, but it's trivial to do yourself. Just change the this.defer()
to a setTimeout()
, and the this._focusDropDownTimer.remove()
to a clearTimeout(this._focusDropDownTimer)
.
Or alternately, even easier, add the defer() method from 1.8 into _WidgetBase.js.
Have attached a sample html page (hello.html) containing DateTextBox? control to reproduce the issue.