(event, type)
| 2807 | |
| 2808 | function 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 | } |
nothing calls this directly
no test coverage detected