Skip to content

Instantly share code, notes, and snippets.

@zhuping
Last active August 29, 2015 14:00
Show Gist options
  • Save zhuping/e64c27726991e69bcfc2 to your computer and use it in GitHub Desktop.
Save zhuping/e64c27726991e69bcfc2 to your computer and use it in GitHub Desktop.
var EventUtil = {
	addHandler: function(element, type, handler) {
		if (element.addEventListener) {
			element.addEventListener(type, handler, false);
		} else if (element.attactEvent) {
			element.attactEvent('on' + type, handler);
		} else {
			element['on' + type] = handler;
		}
	},
	getEvent: function(event) {
		return event ? event : window.event;
	},
	getTarget: function(event) {
		return event.target || event.srcElement;
	},
	preventDefault: function(event) {
		if (event.preventDefault) {
			event.preventDefault();
		} else {
			event.returnValue = false;
		}
	},
	getReatedTarget: function(event) {
		if (event.relatedTarget) {
			return event.relatedTarget;
		} else if (event.toElement) {
			return event.toElement;
		} else if (event.fromElement) {
			return fromElement;
		} else {
			return null;
		}
	},
	getButton: function(event) {
		if (document.implementation.hasFeature('MouseEvents', '2.0')) {
			return event.button;
		} else {
			switch(event.button) {
				case 0:
				case 1:
				case 3:
				case 5:
				case 7:
					return 0;
					break;
				case 2:
				case 6:
					return 2;
					break;
				case 4:
					return 1;
					break;
			}
		}
	},
	getCharCode: function(event) {
		if (typeof event.charCode == 'number') {
			return event.charCode;
		} else {
			return event.keyCode;
		}
	},
	getWheelDelta: function(event) {
		if (event.wheelDelta) {
			return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
		} else {
			return -event.detail * 40;
		}
	},
	removeHandler: function(element, type, handler) {
		if (element.removeEventListener) {
			element.removeEventListener(type, handler, false);
		} else if (element.detachEvent) {
			element.detachEvent('on' + type, handler);
		} else {
			element['on' + type] = null;
		}
	},
	stopPropagation: function(event) {
		if (event.stopPropagation) {
			event.stopPropagation();
		} else {
			event.cancelBubble = true;
		}
	}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment