dom-shims
dom-shims copied to clipboard
Complete and well-tested shims / polyfills for various DOM API's missing in not-so-modern browsers
dom-shims
Complete and well-tested shims / polyfills for various DOM API's missing in not-so-modern browsers.
Installation
npm install --save dom-shims
Apply all the shims by requiring the module without assignment:
require('dom-shims');
Or apply specific shims:
require('dom-shims/shim/CustomEvent');
require('dom-shims/shim/Element.classList');
require('dom-shims/shim/Element.matches');
Features
Event polyfills
- CustomEvent constructor
Element.prototype shims
- Element#classList[1]
- Element#length
- Element#add(tokens...)
- Element#contains(token)
- Element#item(token)
- Element#remove(tokens...)
- Element#toggle(token, force)
- Element#closest
- Element#matches[2]
NOTES:
-
Ensures all browsers have
classListsupport for SVG elements, multiple-argument support foraddandremove,force-argument support fortoggle, and correctlengthanditemvalues even when theclassvalue is mutated by means other thanclassList. -
Patches IE 9's implementation, which lacks support for Elements not attached to the
document.
Element mutation
DOM Level 4 mutation macros for:
parentNode:
- Element#append()
- Element#prepend()
childNode:
- Element#after()
- Element#before()
- Element#remove()
- Element#replace()
Other shims
Browser support
Intended support for:
- Chrome
- Firefox
- IE9+
- Safari 6+
- Android 4+
- Safari iOS 5.1+
- Opera
Acknowledgements
Thanks to the following libraries for inspiration, ideas, and workarounds:
