mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Simulate: Define getters for pageX and pageY in mouse events if they come through as 0. Fixes #7324 - simulate mouse events broken for IE 9.
This commit is contained in:
parent
370bc00150
commit
e2d9b02c56
@ -45,7 +45,7 @@ $.extend( $.simulate.prototype, {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mouseEvent: function( type, options ) {
|
mouseEvent: function( type, options ) {
|
||||||
var evt;
|
var evt, eventDoc, doc, body;
|
||||||
var e = $.extend({
|
var e = $.extend({
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
cancelable: (type !== "mousemove"),
|
cancelable: (type !== "mousemove"),
|
||||||
@ -71,6 +71,30 @@ $.extend( $.simulate.prototype, {
|
|||||||
e.screenX, e.screenY, e.clientX, e.clientY,
|
e.screenX, e.screenY, e.clientX, e.clientY,
|
||||||
e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
|
e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
|
||||||
e.button, e.relatedTarget || document.body.parentNode );
|
e.button, e.relatedTarget || document.body.parentNode );
|
||||||
|
|
||||||
|
// IE 9+ creates events with pageX and pageY set to 0.
|
||||||
|
// Trying to modify the properties throws an error,
|
||||||
|
// so we define getters to return the correct values.
|
||||||
|
if ( evt.pageX === 0 && evt.pageY === 0 && Object.defineProperty ) {
|
||||||
|
eventDoc = evt.relatedTarget.ownerDocument || document;
|
||||||
|
doc = eventDoc.documentElement;
|
||||||
|
body = eventDoc.body;
|
||||||
|
|
||||||
|
Object.defineProperty( evt, "pageX", {
|
||||||
|
get: function() {
|
||||||
|
return e.clientX +
|
||||||
|
( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
|
||||||
|
( doc && doc.clientLeft || body && body.clientLeft || 0 );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.defineProperty( evt, "pageY", {
|
||||||
|
get: function() {
|
||||||
|
return e.clientY +
|
||||||
|
( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
|
||||||
|
( doc && doc.clientTop || body && body.clientTop || 0 );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
} else if ( document.createEventObject ) {
|
} else if ( document.createEventObject ) {
|
||||||
evt = document.createEventObject();
|
evt = document.createEventObject();
|
||||||
$.extend( evt, e );
|
$.extend( evt, e );
|
||||||
|
Loading…
Reference in New Issue
Block a user