UNPKG

1.99 kBJavaScriptView Raw
1simulant.polyfill = function () {
2
3 // https://gist.github.com/Rich-Harris/6010282 via https://gist.github.com/jonathantneal/2869388
4 // addEventListener polyfill IE6+
5 var Event, addEventListener, removeEventListener, head, style;
6
7 Event = function ( e, element ) {
8 var property, instance = this;
9
10 for ( property in e ) {
11 instance[ property ] = e[ property ];
12 }
13
14 instance.currentTarget = element;
15 instance.target = e.srcElement || element;
16 instance.timeStamp = +new Date();
17
18 instance.preventDefault = function () {
19 e.returnValue = false;
20 };
21
22 instance.stopPropagation = function () {
23 e.cancelBubble = true;
24 };
25 };
26
27 addEventListener = function ( type, listener ) {
28 var element = this, listeners, i;
29
30 listeners = element.listeners || ( element.listeners = [] );
31 i = listeners.length;
32
33 listeners[i] = [ listener, function (e) {
34 listener.call( element, new Event( e, element ) );
35 }];
36
37 element.attachEvent( 'on' + type, listeners[i][1] );
38 };
39
40 removeEventListener = function ( type, listener ) {
41 var element = this, listeners, i;
42
43 if ( !element.listeners ) {
44 return;
45 }
46
47 listeners = element.listeners;
48 i = listeners.length;
49
50 while ( i-- ) {
51 if ( listeners[i][0] === listener ) {
52 element.detachEvent( 'on' + type, listeners[i][1] );
53 }
54 }
55 };
56
57 global.addEventListener = document.addEventListener = addEventListener;
58 global.removeEventListener = document.removeEventListener = removeEventListener;
59
60 if ( 'Element' in global ) {
61 Element.prototype.addEventListener = addEventListener;
62 Element.prototype.removeEventListener = removeEventListener;
63 } else {
64 head = document.getElementsByTagName('head')[0];
65 style = document.createElement('style');
66
67 head.insertBefore( style, head.firstChild );
68
69 style.styleSheet.cssText = '*{-ms-event-prototype:expression(!this.addEventListener&&(this.addEventListener=addEventListener)&&(this.removeEventListener=removeEventListener))}';
70 }
71
72 addEventListener.simulant = true;
73
74};
\No newline at end of file