Skip to content

Instantly share code, notes, and snippets.

@tytskyi
Last active August 29, 2015 14:05
Show Gist options
  • Save tytskyi/b8e2f4019900e77a7fa2 to your computer and use it in GitHub Desktop.
Save tytskyi/b8e2f4019900e77a7fa2 to your computer and use it in GitHub Desktop.
var bindNativeEvent = function (domElement, eventType, callback) {
if (!domElement || !eventType) {
return;
}
var eventMethod = window.addEventListener ?
['addEventListener', ''] :
['attachEvent', 'on'];
domElement[eventMethod[0]](eventMethod[1] + eventType, function (event) {
event = event || window.event;
var target = event.target || event.srcElement;
event.target = target;
callback.call(this, event);
}, false);
};
var triggerNativeEvent = function (element, event) {
var evt;
if (document.createEvent) {
// modern browsers
evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true);
return !element.dispatchEvent(evt);
} else {
// ie
evt = document.createEventObject();
return element.fireEvent('on' + event, evt);
}
};
var simulateNativeClick = function () {
if('createEvent' in document) {
var doc = this.ownerDocument,
evt = doc.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
} else {
this.click(); // IE
}
};
/** @example */
bindNativeEvent(document, 'click', function (event) {
console.log(event);
});
triggerNativeEvent(document, 'click');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment