MCPcopy
hub / github.com/binux/qiandao / eventHandler

Function eventHandler

web/static/components/angularjs/angular.js:2809–2859  ·  view source on GitHub ↗
(event, type)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 3

shallowCopyFunction · 0.85
forEachFunction · 0.85
isUndefinedFunction · 0.70

Tested by

no test coverage detected