|
52 | 52 | return keys.indexOf(key) !== -1; |
53 | 53 | } |
54 | 54 |
|
55 | | - if (msie < 9) { |
56 | | - if (inputType == 'radio' || inputType == 'checkbox') { |
57 | | - element.checked = !element.checked; |
| 55 | + var evnt; |
| 56 | + if(/transitionend/.test(eventType)) { |
| 57 | + if(window.WebKitTransitionEvent) { |
| 58 | + evnt = new WebKitTransitionEvent(eventType, eventData); |
| 59 | + evnt.initEvent(eventType, false, true); |
58 | 60 | } |
59 | | - |
60 | | - // WTF!!! Error: Unspecified error. |
61 | | - // Don't know why, but some elements when detached seem to be in inconsistent state and |
62 | | - // calling .fireEvent() on them will result in very unhelpful error (Error: Unspecified error) |
63 | | - // forcing the browser to compute the element position (by reading its CSS) |
64 | | - // puts the element in consistent state. |
65 | | - element.style.posLeft; |
66 | | - |
67 | | - // TODO(vojta): create event objects with pressed keys to get it working on IE<9 |
68 | | - var ret = element.fireEvent('on' + eventType); |
69 | | - if (inputType == 'submit') { |
70 | | - while(element) { |
71 | | - if (element.nodeName.toLowerCase() == 'form') { |
72 | | - element.fireEvent('onsubmit'); |
73 | | - break; |
74 | | - } |
75 | | - element = element.parentNode; |
76 | | - } |
77 | | - } |
78 | | - return ret; |
79 | | - } else { |
80 | | - var evnt; |
81 | | - if(/transitionend/.test(eventType)) { |
82 | | - if(window.WebKitTransitionEvent) { |
83 | | - evnt = new WebKitTransitionEvent(eventType, eventData); |
84 | | - evnt.initEvent(eventType, false, true); |
| 61 | + else { |
| 62 | + try { |
| 63 | + evnt = new TransitionEvent(eventType, eventData); |
85 | 64 | } |
86 | | - else { |
87 | | - try { |
88 | | - evnt = new TransitionEvent(eventType, eventData); |
89 | | - } |
90 | | - catch(e) { |
91 | | - evnt = document.createEvent('TransitionEvent'); |
92 | | - evnt.initTransitionEvent(eventType, null, null, null, eventData.elapsedTime || 0); |
93 | | - } |
| 65 | + catch(e) { |
| 66 | + evnt = document.createEvent('TransitionEvent'); |
| 67 | + evnt.initTransitionEvent(eventType, null, null, null, eventData.elapsedTime || 0); |
94 | 68 | } |
95 | 69 | } |
96 | | - else if(/animationend/.test(eventType)) { |
97 | | - if(window.WebKitAnimationEvent) { |
98 | | - evnt = new WebKitAnimationEvent(eventType, eventData); |
99 | | - evnt.initEvent(eventType, false, true); |
100 | | - } |
101 | | - else { |
102 | | - try { |
103 | | - evnt = new AnimationEvent(eventType, eventData); |
104 | | - } |
105 | | - catch(e) { |
106 | | - evnt = document.createEvent('AnimationEvent'); |
107 | | - evnt.initAnimationEvent(eventType, null, null, null, eventData.elapsedTime || 0); |
108 | | - } |
109 | | - } |
| 70 | + } |
| 71 | + else if(/animationend/.test(eventType)) { |
| 72 | + if(window.WebKitAnimationEvent) { |
| 73 | + evnt = new WebKitAnimationEvent(eventType, eventData); |
| 74 | + evnt.initEvent(eventType, false, true); |
110 | 75 | } |
111 | 76 | else { |
112 | | - evnt = document.createEvent('MouseEvents'); |
113 | | - x = x || 0; |
114 | | - y = y || 0; |
115 | | - evnt.initMouseEvent(eventType, true, true, window, 0, x, y, x, y, pressed('ctrl'), |
116 | | - pressed('alt'), pressed('shift'), pressed('meta'), 0, element); |
| 77 | + try { |
| 78 | + evnt = new AnimationEvent(eventType, eventData); |
| 79 | + } |
| 80 | + catch(e) { |
| 81 | + evnt = document.createEvent('AnimationEvent'); |
| 82 | + evnt.initAnimationEvent(eventType, null, null, null, eventData.elapsedTime || 0); |
| 83 | + } |
117 | 84 | } |
| 85 | + } |
| 86 | + else { |
| 87 | + evnt = document.createEvent('MouseEvents'); |
| 88 | + x = x || 0; |
| 89 | + y = y || 0; |
| 90 | + evnt.initMouseEvent(eventType, true, true, window, 0, x, y, x, y, pressed('ctrl'), |
| 91 | + pressed('alt'), pressed('shift'), pressed('meta'), 0, element); |
| 92 | + } |
118 | 93 |
|
119 | | - /* we're unable to change the timeStamp value directly so this |
120 | | - * is only here to allow for testing where the timeStamp value is |
121 | | - * read */ |
122 | | - evnt.$manualTimeStamp = eventData.timeStamp; |
| 94 | + /* we're unable to change the timeStamp value directly so this |
| 95 | + * is only here to allow for testing where the timeStamp value is |
| 96 | + * read */ |
| 97 | + evnt.$manualTimeStamp = eventData.timeStamp; |
123 | 98 |
|
124 | | - if(!evnt) return; |
| 99 | + if(!evnt) return; |
125 | 100 |
|
126 | | - var originalPreventDefault = evnt.preventDefault, |
127 | | - appWindow = element.ownerDocument.defaultView, |
128 | | - fakeProcessDefault = true, |
129 | | - finalProcessDefault, |
130 | | - angular = appWindow.angular || {}; |
| 101 | + var originalPreventDefault = evnt.preventDefault, |
| 102 | + appWindow = element.ownerDocument.defaultView, |
| 103 | + fakeProcessDefault = true, |
| 104 | + finalProcessDefault, |
| 105 | + angular = appWindow.angular || {}; |
131 | 106 |
|
132 | | - // igor: temporary fix for https://bugzilla.mozilla.org/show_bug.cgi?id=684208 |
133 | | - angular['ff-684208-preventDefault'] = false; |
134 | | - evnt.preventDefault = function() { |
135 | | - fakeProcessDefault = false; |
136 | | - return originalPreventDefault.apply(evnt, arguments); |
137 | | - }; |
| 107 | + // igor: temporary fix for https://bugzilla.mozilla.org/show_bug.cgi?id=684208 |
| 108 | + angular['ff-684208-preventDefault'] = false; |
| 109 | + evnt.preventDefault = function() { |
| 110 | + fakeProcessDefault = false; |
| 111 | + return originalPreventDefault.apply(evnt, arguments); |
| 112 | + }; |
138 | 113 |
|
139 | | - element.dispatchEvent(evnt); |
140 | | - finalProcessDefault = !(angular['ff-684208-preventDefault'] || !fakeProcessDefault); |
| 114 | + element.dispatchEvent(evnt); |
| 115 | + finalProcessDefault = !(angular['ff-684208-preventDefault'] || !fakeProcessDefault); |
141 | 116 |
|
142 | | - delete angular['ff-684208-preventDefault']; |
| 117 | + delete angular['ff-684208-preventDefault']; |
143 | 118 |
|
144 | | - return finalProcessDefault; |
145 | | - } |
| 119 | + return finalProcessDefault; |
146 | 120 | }; |
147 | 121 | }()); |
0 commit comments