jQuery: The Write Less, Do More JavaScript Library

Ticket #1402 (closed bug: fixed)

Opened 1 year ago

Last modified 1 year ago

Mouse Event Error in IE in 1.1.3.1

Reported by: suv4x4 Assigned to: brandon
Type: bug Priority: critical
Milestone: 1.1.4 Component: event
Version: 1.1.3 Keywords:
Cc: Needs: Review

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:

... + (e.scrollLeft 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;

}

}

Attachments

Change History

Changed 1 year ago by suv4x4

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.

Changed 1 year ago by john

  • owner deleted
  • component changed from ajax to event
  • summary changed from Weird object detection to 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

Changed 1 year ago by john

  • owner set to brandon

Changed 1 year ago by brandon

  • status changed from new to closed
  • resolution set to fixed

Fixed in Rev [2419].

Note: See TracTickets for help on using tickets.