MCPcopy Create free account
hub / github.com/bclinkinbeard/angular / eventHandler

Function eventHandler

test/fixtures/foo.js:2819–2869  ·  view source on GitHub ↗
(event, type)

Source from the content-addressed store, hash-verified

2817
2818function createEventHandler(element, events) {
2819 var eventHandler = function (event, type) {
2820 if (!event.preventDefault) {
2821 event.preventDefault = function() {
2822 event.returnValue = false; //ie
2823 };
2824 }
2825
2826 if (!event.stopPropagation) {
2827 event.stopPropagation = function() {
2828 event.cancelBubble = true; //ie
2829 };
2830 }
2831
2832 if (!event.target) {
2833 event.target = event.srcElement || document;
2834 }
2835
2836 if (isUndefined(event.defaultPrevented)) {
2837 var prevent = event.preventDefault;
2838 event.preventDefault = function() {
2839 event.defaultPrevented = true;
2840 prevent.call(event);
2841 };
2842 event.defaultPrevented = false;
2843 }
2844
2845 event.isDefaultPrevented = function() {
2846 return event.defaultPrevented || event.returnValue === false;
2847 };
2848
2849 // Copy event handlers in case event handlers array is modified during execution.
2850 var eventHandlersCopy = shallowCopy(events[type || event.type] || []);
2851
2852 forEach(eventHandlersCopy, function(fn) {
2853 fn.call(element, event);
2854 });
2855
2856 // Remove monkey-patched methods (IE),
2857 // as they would cause memory leaks in IE8.
2858 if (msie <= 8) {
2859 // IE7/8 does not allow to delete property on native object
2860 event.preventDefault = null;
2861 event.stopPropagation = null;
2862 event.isDefaultPrevented = null;
2863 } else {
2864 // It shouldn't affect normal browsers (native methods are defined on prototype).
2865 delete event.preventDefault;
2866 delete event.stopPropagation;
2867 delete event.isDefaultPrevented;
2868 }
2869 };
2870 eventHandler.elem = element;
2871 return eventHandler;
2872}

Callers

nothing calls this directly

Calls 3

isUndefinedFunction · 0.85
shallowCopyFunction · 0.85
forEachFunction · 0.85

Tested by

no test coverage detected