#1402 closed bug (fixed)
Mouse Event Error in IE in 1.1.3.1
Reported by: | suv4x4 | Owned by: | brandon |
---|---|---|---|
Priority: | critical | Milestone: | 1.1.4 |
Component: | event | Version: | 1.1.3 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I was having a weird error with Ext UI for jscript 1.1.1 and I identified that the jquery coders tried to "object detect" integers like this:
b.scrollLeft); |
Now.. that's very "smart" but fails every time e.scrollLeft is zero (in IE). Makes the code jump to b.scrollLeft and this ends with "Object expected" error.
I then downloaded 1.1.3.1 and noticed someone tried to fudge the issue by shuffling the code a bit (this is line 1442 from the uncompressed distribution):
Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && event.clientX != null ) {
var e = document.documentElement, b = document.body;
event.pageX = event.clientX + (e && e.scrollLeft b.scrollLeft); event.pageY = event.clientY + (e && e.scrollTop b.scrollTop); }
Of course this accomplishes nothing and the issue still stands. Here's my fix (good ol' fashioned "typeof"):
Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && event.clientX != null ) {
var e = document.documentElement, b = document.body; if (typeof e.scrollLeft == 'undefined') {
event.pageX = event.clientX + b.scrollLeft; event.pageY = event.clientY + b.scrollTop;
} else {
event.pageX = event.clientX + e.scrollLeft; event.pageY = event.clientY + e.scrollTop;
}
}
Change History (4)
comment:1 Changed 16 years ago by
comment:2 Changed 16 years ago by
Component: | ajax → event |
---|---|
Summary: | Weird object detection → Mouse Event Error in IE in 1.1.3.1 |
The best fix that I've seen for this is:
e && e.scrollLeft || b && b.scrollLeft || 0
comment:3 Changed 16 years ago by
Owner: | set to brandon |
---|
Nice, the comment system fudges the code.. well I could mail you the fix if you want, but the idea is using "typeof" variable == 'undefined' and not logical or.