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