#7359 closed enhancement (wontfix)
Cannot detect mouse position over a disabled field in Firefox
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | low | Milestone: | 1.5 |
Component: | event | Version: | 1.4.3 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Seems I can't detect the mouseX or mouseY while over a disabled form field. Works in IE, but not Firefox. Example
Change History (15)
comment:2 follow-up: 3 Changed 13 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Unfortunately, there really isn’t anything that jQuery can do about this. Not even using capturing works; both Firefox and WebKit just suck it into a big black hole of nothingness.
comment:3 follow-up: 4 Changed 13 years ago by
Replying to snover:
Unfortunately, there really isn’t anything that jQuery can do about this. Not even using capturing works; both Firefox and WebKit just suck it into a big black hole of nothingness.
I made a workaround that I think works in all browsers. If you would like to see - http://jsfiddle.net/Jason/Hg2SK/7/
comment:4 Changed 13 years ago by
Replying to jason_lau@…:
I made a workaround that I think works in all browsers. If you would like to see - http://jsfiddle.net/Jason/Hg2SK/7/
Excatly what I was talking about. A similar thing was done by the developer of Firebug. This works for me in FF and Chrome.
comment:5 follow-up: 6 Changed 13 years ago by
Component: | unfiled → event |
---|---|
Keywords: | needsreview added |
Priority: | undecided → low |
Resolution: | wontfix |
Status: | closed → reopened |
Type: | bug → enhancement |
I'm changing this to an "enhancement" that is up for review.
comment:6 Changed 13 years ago by
Replying to rwaldron:
I'm changing this to an "enhancement" that is up for review.
Hmm, I don't think this should become an enhancement to the jQuery Core.
The proxy divs work well enough if you really need this. But I feel this to be too intrusive to include it in general. A jQuery plugin IMO is the right way to handle this.
Also this only works if you want to catch the event high up in the DOM tree (document, body, html). It doesn't solve the problem of binding an event directly to the disabled element e.g. $("input:disabled").bind("mousemove", function() { ... })
won't work. For this the proxy divs would need to trigger the event-handler bound to the disabled element.
comment:7 Changed 13 years ago by
My reasoning is that jQuery does provide cross-browser normalization for unexpected incompatibilities. I think this particular one should at least be discussed - if it is dismissed outright, that is certainly fine as well.
comment:9 Changed 13 years ago by
#7379 is More evidence to support the discussion of adding workaround support for this issue.
comment:10 Changed 13 years ago by
comment:11 Changed 13 years ago by
To eliminate cross-browser behavior inconsistencies, I added a client-side-generated transparent gif to the overlay. For example, Internet Explorer could not detect a click on a disabled field, but Firefox could. The transparent image (1px x 1px scaled to 100% x 100%) filled the void of the empty container, I suppose. It's been tested in all browsers. http://jasonlau.biz/jquery.detectmouseoverdisabled/
comment:12 Changed 13 years ago by
Keywords: | needsreview removed |
---|---|
Resolution: | → wontfix |
Status: | reopened → closed |
A plugin seems like a great way to fix this, thanks jason_lau!
comment:13 Changed 13 years ago by
@dmethvin +1!
@jason_lau - how about putting your work up on github :D
comment:14 Changed 13 years ago by
@ rwaldron Done. Thanks for the suggestion. jasonlau at github.com
This isn't a jQuery bug IMO.
It works in IE and Opera but doesn't in Firefox and Chrome (so I guess it also won't work in Safari).
Without digging too deep I found this oooold bug report for FF. But from the looks of it this will never ever be fixed.
So it seems like you hit a specific behavior which varies between browsers. FF and Chrome don't accept/generate/pass-on any mouse-events when over a disabled element. While Opera and IE do.
In case you really depend on this specific code working crossbrowser:
This bug in FF also was a problem for the developer of Firebug (Firebug relies on mouse-events to know which element you want to inspect). They solved it by putting a proxy-div-overlays over the disabled elements. Firebug bug report and solution (css + js)
In case the original link becomes unavailable sometime I ported the test case to jsfiddle