├── README.md ├── bower.json ├── component.json ├── eventie.js ├── package.json └── test.html /README.md: -------------------------------------------------------------------------------- 1 | # eventie - event binding helper 2 | 3 | Makes dealing with events in IE8 bearable. Supported by IE8+ and good browsers. 4 | 5 | ``` js 6 | var elem = document.querySelector('#my-elem'); 7 | function onElemClick( event ) { 8 | console.log( event.type + ' just happened on #' + event.target.id ); 9 | // -> click just happened on #my-elem 10 | } 11 | 12 | eventie.bind( elem, 'click', onElemClick ); 13 | 14 | eventie.unbind( elem, 'click', onElemClick ); 15 | ``` 16 | 17 | ## Install 18 | 19 | Download [eventie.js](eventie.js) 20 | 21 | Install with [Bower :bird:](http://bower.io) `bower install eventie` 22 | 23 | Install with npm :truck: `npm install eventie` 24 | 25 | Install with [Component :nut_and_bolt:](https://github.com/component/component) `component install desandro/eventie` 26 | 27 | ## IE 8 28 | 29 | eventie add support for `event.target` and [`.handleEvent` method](https://developer.mozilla.org/en-US/docs/DOM/EventListener#handleEvent\(\)) for Internet Explorer 8. 30 | 31 | ## MIT license 32 | 33 | eventie is released under the [MIT license](http://desandro.mit-license.org). 34 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eventie", 3 | "version": "1.0.6", 4 | "main": "eventie.js", 5 | "description": "event binding helper", 6 | "ignore": [ 7 | "component.json", 8 | "test.html", 9 | "**/.*", 10 | "node_modules", 11 | "bower_components" 12 | ], 13 | "homepage": "https://github.com/desandro/eventie", 14 | "authors": [ 15 | "David DeSandro" 16 | ], 17 | "moduleType": [ 18 | "amd", 19 | "globals", 20 | "node" 21 | ], 22 | "keywords": [ 23 | "event" 24 | ], 25 | "license": "MIT" 26 | } 27 | -------------------------------------------------------------------------------- /component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eventie", 3 | "repo": "desandro/eventie", 4 | "description": "Event binding helper", 5 | "version": "1.0.6", 6 | "scripts": ["eventie.js"], 7 | "main": "eventie.js" 8 | } 9 | -------------------------------------------------------------------------------- /eventie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * eventie v1.0.6 3 | * event binding helper 4 | * eventie.bind( elem, 'click', myFn ) 5 | * eventie.unbind( elem, 'click', myFn ) 6 | * MIT license 7 | */ 8 | 9 | /*jshint browser: true, undef: true, unused: true */ 10 | /*global define: false, module: false */ 11 | 12 | ( function( window ) { 13 | 14 | 'use strict'; 15 | 16 | var docElem = document.documentElement; 17 | 18 | var bind = function() {}; 19 | 20 | function getIEEvent( obj ) { 21 | var event = window.event; 22 | // add event.target 23 | event.target = event.target || event.srcElement || obj; 24 | return event; 25 | } 26 | 27 | if ( docElem.addEventListener ) { 28 | bind = function( obj, type, fn ) { 29 | obj.addEventListener( type, fn, false ); 30 | }; 31 | } else if ( docElem.attachEvent ) { 32 | bind = function( obj, type, fn ) { 33 | obj[ type + fn ] = fn.handleEvent ? 34 | function() { 35 | var event = getIEEvent( obj ); 36 | fn.handleEvent.call( fn, event ); 37 | } : 38 | function() { 39 | var event = getIEEvent( obj ); 40 | fn.call( obj, event ); 41 | }; 42 | obj.attachEvent( "on" + type, obj[ type + fn ] ); 43 | }; 44 | } 45 | 46 | var unbind = function() {}; 47 | 48 | if ( docElem.removeEventListener ) { 49 | unbind = function( obj, type, fn ) { 50 | obj.removeEventListener( type, fn, false ); 51 | }; 52 | } else if ( docElem.detachEvent ) { 53 | unbind = function( obj, type, fn ) { 54 | obj.detachEvent( "on" + type, obj[ type + fn ] ); 55 | try { 56 | delete obj[ type + fn ]; 57 | } catch ( err ) { 58 | // can't delete window object properties 59 | obj[ type + fn ] = undefined; 60 | } 61 | }; 62 | } 63 | 64 | var eventie = { 65 | bind: bind, 66 | unbind: unbind 67 | }; 68 | 69 | // ----- module definition ----- // 70 | 71 | if ( typeof define === 'function' && define.amd ) { 72 | // AMD 73 | define( eventie ); 74 | } else if ( typeof exports === 'object' ) { 75 | // CommonJS 76 | module.exports = eventie; 77 | } else { 78 | // browser global 79 | window.eventie = eventie; 80 | } 81 | 82 | })( window ); 83 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eventie", 3 | "version": "1.0.6", 4 | "description": "Event binding helper", 5 | "main": "eventie.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/desandro/eventie.git" 12 | }, 13 | "license": "MIT", 14 | "bugs": { 15 | "url": "https://github.com/desandro/eventie/issues" 16 | }, 17 | "homepage": "https://github.com/desandro/eventie", 18 | "keywords": [ 19 | "DOM", 20 | "event" 21 | ], 22 | "author": "David DeSandro" 23 | } 24 | -------------------------------------------------------------------------------- /test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |