Preparation Code Preparation HTML (this will be inserted in the <body>
of a valid HTML5 document in standards mode) (useful when testing DOM operations or including libraries) <script src ="https://code.jquery.com/jquery-2.1.1.min.js" > </script >
<script >
(function ($, undefined ) {
if (!Object .defineProperties ) return ;
function set (obj, prop, val ) {
if (val !== undefined ) {
Object .defineProperty (obj, prop, {
value : val
});
}
return val;
};
var special = {
pageX : function (original ) {
debugger ;
var eventDoc = this .target .ownerDocument || document ;
var doc = eventDoc.documentElement ;
var body = eventDoc.body ;
return original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - (doc && doc.clientLeft || body && body.clientLeft || 0 );
},
pageY : function (original ) {
var eventDoc = this .target .ownerDocument || document ;
var doc = eventDoc.documentElement ;
var body = eventDoc.body ;
return original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0 ) - (doc && doc.clientTop || body && body.clientTop || 0 );
},
relatedTarget : function (original ) {
if (!original) return ;
return original.fromElement === this .target ? original.toElement : original.fromElement ;
},
metaKey : function (originalEvent ) {
return originalEvent.ctrlKey ;
},
which : function (original ) {
return original.charCode != null ? original.charCode : original.keyCode ;
}
};
$.each ($.event.keyHooks .props .concat ($.event.mouseHooks .props ).concat ($.event.props ), function (i, prop ) {
if (prop !== "target" ) {
Object .defineProperty ($.Event .prototype , prop, {
get : function ( ) {
if (this ['_' + prop] !== undefined )
return this ['_' + prop];
var originalValue = this .originalEvent && this .originalEvent [prop];
var value = special[prop] && originalValue === undefined ?
special[prop].call (this , this .originalEvent ) :
originalValue;
this [prop] = value;
return value;
},
set : function (newValue ) {
this ['_' + prop] = newValue;
}
});
}
});
$.event.fastFix = function (event ) {
if (event[$.expando]) {
return event;
}
var originalEvent = event;
event = $.Event (originalEvent);
event.target = originalEvent.target ;
if (!event.target ) {
event.target = originalEvent.srcElement || (event.currentTarget && (event.currentTarget .ownerDocument || event.currentTarget )) || document ;
}
if (event.target .nodeType === 3 ) {
event.target = event.target .parentNode ;
}
return event;
};
}(jQuery));
var makeClick = function ( ){
var event;
try {
event = document .createEvent ('MouseEvents' );
event.initMouseEvent ("click" , true , true , null , null , 100 , 100 , 100 , 100 , false , false , false , false , 0 , null );
} catch (e) {
try {
event = document .createEvent ("Events" );
} catch (e2) {
event = document .createEvent ("UIEvents" );
} finally {
event.initEvent ("click" , true , true );
}
}
return event;
}
</script >
Setup JS
Teardown JS