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