1 | simulant.polyfill = function () {
|
2 |
|
3 |
|
4 |
|
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 |