Skip to content
Polyfill event : EventListener, EventTarget, CustomEvent, MouseEvent, KeyboardEvent
JavaScript TypeScript HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src add support for "null" or "undefined" as 2nd argument of event listeners Apr 25, 2019
tests 2.1.1 => add support "null" third argument of addEventListener Jan 7, 2019
.gitignore first commit Jan 20, 2017
.npmignore npmignore tests Apr 3, 2017
README.md v2.0.2 => add support to PointerEvent Feb 6, 2018
event-constructor-polyfill.js add Event Oct 23, 2017
event-constructor-polyfill.min.js add Event Oct 23, 2017
event-listener-polyfill.js
event-listener-polyfill.min.js remove log Apr 20, 2017
index.js add support for "null" or "undefined" as 2nd argument of event listeners Apr 25, 2019
index.min.js
package-lock.json add support for "null" or "undefined" as 2nd argument of event listeners Apr 25, 2019
package.json

README.md

Polyfill different events classes and methods to match last ES7 specifications

Tested on IE 10+

Install

npm i events-polyfill --save

For fast use import 'events-polyfill' (will import index.js).

[INFO] New release v2 that allow you to import specific polyfills only:

  • you can use webpack (or any bundler) to import only required polyfills from src/.
  • or you can import index.js (or index.min.js) at the root to polyfill everything.

src/constructors/*.js

Polyfill for : Event, CustomEvent, MouseEvent, KeyboardEvent, FocusEvent PointerEvent

src/ListenerOptions.js

Polyfill for the options argument of :

EventTarget.prototype.addEventListener(type, listener[, options]);
EventTarget.prototype.removeEventListener(type, listener[, options]);

options : last parameter which replace boolean useCapture

  • once : trigger only once this event (default: false)
  • passive : allow browser to continue animations (ex: while scrolling) by 'disabling' event.preventDefault() (default: false)
  • capture : replace useCapture (default: false)

Example:

document.addEventListener('click', function() {
    console.log('clicked once');
}, { once: true });

src/ListenerEventTypes.js

Polyfill for the type argument of :

EventTarget.prototype.addEventListener(type, listener[, options]);
EventTarget.prototype.removeEventListener(type, listener[, options]);

Polyfill vendor prefixed events like 'pointerlockchange' (try 'pointerlockchange', 'mozpointerlockchange' and 'webkitpointerlockchange') and some 'experimental' events like 'wheel' (try 'wheel', 'mousewheel', 'DOMMouseScroll')

  • [INFO] If option can't be polyfilled : throw an error (allow you to check is event type is supported)

Currently polyfilled types :

[
    'wheel',
    'pointerlockchange', 'pointerlockerror',
    'fullscreenchange', 'fullscreenerror',
    'animationend', 'animationiteration', 'animationstart', 'transitionend',
    'pointercancel', 'pointerdown', 'pointerhover', 'pointermove', 'pointerout', 'pointerover', 'pointerup'
]
You can’t perform that action at this time.