-
Notifications
You must be signed in to change notification settings - Fork 3k
HTML5 Cross Browser Polyfills
The No-Nonsense Guide to HTML5 Fallbacks
So here we're collecting all the shims, fallbacks, and polyfills in order to implant HTML5 functionality in browsers that don't natively support them.
The general idea is that: We, as developers, should be able to develop with the HTML5 APIs, and scripts can create the methods and objects that should exist. Developing in this future-proof way means as users upgrade, your code doesn't have to change but users will move to the better, native experience cleanly.
-
Looking to conditionally load these scripts (client-side), based on feature detects?
See Modernizr. -
Looking for a guide to write your own polyfills?
See Writing Cross-Browser JavaScript Polyfills. -
Looking for an alphabetical guide on HTML5, CSS3, etc. features, and how to use them?
See HTML5PLEASE. -
Looking for a polyfill combinator?
See Polyfiller.
-
svgweb by Brad Neuberg & others
- Fallback via Flash
-
Snap.SVG from scratch by the author of Raphaël (Dmitry Baranovskiy)
- Abstracted API. Adds features. Fallback for IE via VML.
- Ample SDK by Sergey Ilinsky
-
canvg by Gabe Lerner
- Writes SVG to
canvas
. Good for Android
- Writes SVG to
-
SVG Boilerplate
- (alpha; still buggy) Handle multiple concurrent SVG shims together
-
SIE SVG library by dhrname
- Fallback to VML for old IE
-
dojo gfx by Eugene Lazutkin, Kun Xi, Chris Mitchell
- Fallback via VML, Canvas, Silverlight and Flash
-
fabric.js by kangax
- Render SVG via
canvas
- Render SVG via
- FakeSmile by David Leunen
-
FlashCanvas by Shinya Muramatsu
- Reported to have 33x better performance than excanvas
- excanvas by Google, Erik Arvidsson
- slcanvas project (Original Silverlight bridge)
-
canvas-text
- Only necessary for canvastext in IE, really
- fxCanvas
- Kinetic.js by Eric Drowell
- mortzdk/localStorage by Morten Houmøller Nygaard
-
inexorabletash polyfill by Joshua Bell
- based on Remy Sharp's gist
- cookie-based polyfill by Remy Sharp
- In-memory stub polyfill by Julio Cesar Ody
-
sessionStorage
by Andrea Giammarchi - Amplify.js by appendTo
-
textStorage.js by sofish
- Using
localStorage
API, Fallback for IE6+
- Using
- ssw by Matthias Schäfer
-
$.store
by Rodney Rehm - lawnchair by Brian Leroux
- store.js by Marcus Westin
- PersistJS by Paul Duncan
- Squirrel.js by Aaron Gustafson
- jStorage by Andris Reinman
-
html5shiv by afarkas, Jon Neal & community
- Enables for print use, as well
-
innerShivby Joe BartlettEnables elements forinnerHTML
use- Deprecated: replaced by html5shiv
-
mwEmbed Video Player and PlayKit-js by Kaltura.
- Open Source libraries that provide a complete video player library including support for all video streaming formats, accessibility, captions, plugins, interactivity and more. See the Player Showcase.
- See comparison between the two stacks: mwEmbed vs. PlayKit-js.
-
html5media
- Uses Flowplayer SWF for fallback.
-
mediaelement.js by John Dyer
- SWF player that mimics HTML5 media API. Consistent UI across browsers and flash.
<track>
support.
- SWF player that mimics HTML5 media API. Consistent UI across browsers and flash.
-
video.js by Zencoder
- Device fixes.
<track>
support
- Device fixes.
-
LeanBack Player - HTML5 audio/video media player
- HTML5 audio/video media player UI, easy to integrate and independent of other JS libraries.
-
video for everybody by Kroc Camen (original)
- The granddaddy of
<video>
fallbacks. Markup-based solution; works without Javascript! A must read.
- The granddaddy of
- videosub
- JSCaptions by Daniel Davis
-
Captionator by Christopher Giffard
- Supports WHATWG TextTrack spec & has experimental support for MediaTracks/synchronised media elements
-
playr by Julien Villetorte
- Support both WebVTT & SubRip files
-
SoundJS
- SoundJS provides a simple API and powerful features that abstract away the difficulties in varied browser audio support. Optional flash fallback for older browser support. Extensive documentation and active community.
-
audioJS
- AudioJS is a agnostic and cross-browser lib to work easily with the AudioContext API of HTML5.
-
jPlayer
- custom
<audio>
player with jQuery dependency, flash fallback
- custom
-
audio.js by ab+c
- custom
<audio>
player, flash fallback
- custom
-
SoundManager2
- custom
<audio>
player, flash fallback, API, extensive documentation
- custom
-
LeanBack Player - HTML5 audio/video media player
- HTML5 audio/video media player UI, easy to integrate and independent of other JS libraries.
-
WAAPISim by g200kg
- Uses Audio Data API in Firefox. Falls back to Flash in Opera, IE.
-
XAudioJS by Grant Galitz
- Audio sample stream output thin-abstraction library that supports mono and stereo audio, as well as resampling the audio stream.
- Supports the Mozilla Audio Data API, Web Audio API, Adobe Flash 10, real-time WAV PCM Data URI generation
- dynamicaudio.js by Ben Firshman
- audiolib.js by Jussi Kalliokoski
-
IndexedDB Polyfill by Parashuram
- Polyfill for IndexedDB on WebSql
- Tested on IndexedDB libraries like PouchDB, JqueryIndexedDB Plugin, Linq2IndexedDB and DBJS
- localForage by Mozilla
-
idb-iegap by David Fahlander
- Makes IE10 and IE11 support the full indexedDB standard, as Chrome, Opera and Firefox does.
- clientdb.js Requires gears. Non-HTML5 API
- webstorageportabilitylayer Requires gears. Non-HTML5 API
- SQLjs Requires gears. Non-HTML5 API
- DomSQL Non-HTML5 API
- localForage by Mozilla
- localStorageDB Non-HTML5 API
- LocalStorageDB.js Non-HTML5 API
- db.js by Andrea Giammarchi Non-HTML5 API
-
Webshims Lib by Alexander Farkas (not compatible with jQuery 3)
- Several Polyfills including Constraint Validation and several input-widgets
- H5F by Ryan Seddon (deprecated, use hyperform instead)
- webforms2 by Weston Ruter
- nwx forms (demo) by Diego Perini
- HTML5 Form Shim by Dmitry Sheiko
- jQuery form shim (GitHub) by Andrew Dodson
-
html5widgets by Zoltan Hawryluk
- uses webforms2 a few other battle-tested scripts for datepicker and colorpicker.
-
gallery-html5-forms YUI3 gallery module by Matt Snider
- HTML5-enable forms for legacy browsers; requires YUI3; doesn't include
type=number
ortype=range
- HTML5-enable forms for legacy browsers; requires YUI3; doesn't include
-
selectedOptions multiple
<select>
shim by Brett Zamir -
oninput
event shim by Ben Alpert -
form
attribute polyfill by ChiChou - FormData by Jimmy Wärting
- jscolor Polyfill version of jscolor by Jan Odvárko. by Johannes J. Schmidt
- nodep-date-input-polyfill by Brian Blakely
- better-dateinput-polyfill by Maksim Chemerisuk
- better-timeinput-polyfill by Maksim Chemerisuk
-
Accessible and unobtrusive slider /
<input type=range>
polyfill by Brian McAllister -
rangeslider.js by André Ruffert
- simple, small and fast JavaScript/jQuery polyfill for the HTML5
<input type="range"
> slider element (not accessible)
- simple, small and fast JavaScript/jQuery polyfill for the HTML5
-
<input type=range>
shim for Firefox by Frank Yan -
<input type=number>
shim by jonstipe
- better-form-validation by Maksim Chemerisuk
- jquery.html5form by Matias Mancini
- HyperForm
-
Placeholder by James Brumond
- multiple different placeholder implementations for different use cases
- Placeholder jQuery plugin by Mathias Bynens
- Placeholder Enhanced by Denis Ciccale
-
jquery-placeholder by Brian Reavis
- doesn't set
input
's value
- doesn't set
-
jquery.HTML5Support by Amiel Martin
- supports
placeholder
andautofocus
- supports
- jquery.placeholder.js by Paul Serby
-
Placeholders.js - An HTML5 placeholder attribute polyfill by James Allardice
- non-jQuery, works in IE6+, and also now allows for placeholders that don't disappear on focus
-
placeholder-augment by Jethro Larson
- jQuery, IE6, iPhone, android, etc. Placeholders don't disappear on focus.
-
better-placeholder-polyfill by Maksim Chemerisuk
- doesn't require initialization for a dynamic content
-
Placeholdr by Shane Carr
- under 1KB, drop-in functionality, extends jQuery
$.fn.val
, emptiesplaceholder
text on form submit
- under 1KB, drop-in functionality, extends jQuery
-
HTML5 placeholder polyfill by Dirk Ginader
- jQuery powered with a focus on accessibility
- Minimal and library dependency-free vanilla JavaScript polypill by Maximilian Franzke
- Relevant Dropdowns by Chris Coyier
-
datalist
fallback by adactio.- Not a polyfill, but it's done with PE.
-
Webshims Lib by Alexander Farkas
- has support for
datalist
element (includesinput[list]
,input[selectedOption]
,datalist[options]
)
- has support for
- SockJS by Marek Majkowski
-
socket.io by Guillermo Rauch
- Abstracts API and adds features
-
kaazing websocket gateway
- Commercial product. Pure polyfill.
-
web-socket-js
- Supports CORS fallback
-
atmosphere jQuery plugin
- Fallback to comet long-polling
-
Graceful WebSocket jQuery plugin by David Lindkvist
- Fallback to comet long-polling
-
Portal by Donghwan Kim
- Server agnostic and supports Sharing connection, WebSocket, Server-Sent Events, Streaming and Long polling.
-
DataChannel polyfill by Jesús Leganés Combarro “Piranna”
- Add support for WebRTC DataChannels using a WebSockets proxy server as backend
- Webshims Lib by Alexander Farkas
- geolocation polyfill by Joshua Bell
- geolocation shim by Paul Irish
-
geo-location-javascript
- Mobile-centric: non-standard Blackberry and WebOS tricks
- Geolocation-API-Polyfill by Manuel Bieh
- Navigator.sendBeacon by Miguel Mota
- html5-gears by Brad Neuberg
-
jiagra by Samy Kamkar
- A psuedo-polyfill for preloading pages to browser cache
- Visibility.js by Andrey Sitnik
- visibly.js by Addy Osmani
-
Page Visibility shim for jQuery by Mathias Bynens
- The HTML5 Page Visibility API allows you to determine whether your web page is visible to the user, is hidden in background tab, or is prerendering. visibility.js deals with vendor-prefixes and provides a fallback for browsers without this API by assuming the page is always visible. However, this is a wrapper more than a polyfill.
-
offline-event.js by Remy Sharp (Opera not supported. Safari doesn't update
navigator.onLine
property.) - heyoffline.js by oskarkrawczyk
-
History.js by Benjamin Lupton
- (optional
hashchange
fallback for HTML4 browsers)
- (optional
-
HTML5-History-API by Dmitriy Pakhtinov
- Lightweight, and fully standards-compliant implementation of History API with IE6+ support and
hashchange
implementation
- Lightweight, and fully standards-compliant implementation of History API with IE6+ support and
-
PJAX by Chris Wanstrath
- (
pushState
+ ajax = pjax) (not a polyfill)
- (
-
hashchange
jQuery event by Ben Alman -
HistoryManager
Mootools Plugin by Arieh Glazer - SWFAddress (popular among Flash developers) & jQuery Address by Asual DZZD
- jQuery Ajaxy by Benjamin Lupton
- Hasher by Miller Medeiros
- sHistory by Andrew Udvare
- Drag drop shim by Tim Ruffles
-
AnimationFrame
even better animation frame by Oleg Slobodskoi -
requestAnimationFrame
by Erik Möller -
raf.js
dependency-free polyfill by Nicolas Gryman
- APNG-Canvas by Давид Мзареулян
-
png.js by Devon Govett
- Parses and renders PNGs both animated and static to a canvas element with putImageData
- Cross-browser ruby annotations using CSS by Zoltan Hawryluk
- Details Element Polyfill by Javan Makhmali
-
Accessible
<details>
fallback via jQuery by Mathias Bynens (repository) -
Another
<details>
alternative, also based on jQuery by Manuel Bieh - jquery-details by Denis Sokolov
- Pure JS polyfill with DOM API and IE6+ support by Егор Халимоненко
- Deets - jQuery UI Widget based fallback + enhancements by Gregory Waxman
- better-details-polyfill by Maksim Chemerisuk
- dialog-polyfill by Google
-
<meter>
meter-polyfill by fisker Cheung -
<meter>
fallback by strings28 -
<meter>
jQuery plugin/shim by xjamundx -
<meter>
Dojo Toolkit module by Whymarrh Whitby
-
<progress>
polyfill by Lea Verou -
<menu type="context">
polyfill by Björn Brala and Rodney Rehm
dataset
shim-
dataset
fallback rewritten by Brett Zamir -
element-dataset
with cross browser tests -
dataset
ponyfill by Alex Cross
-
Polyfill for
reversed
attribute on ordered lists by Louis Lazaris. Also integrates with thestart
attribute, which has 100% browser support. See also: Reverse Ordered Lists in HTML5 - A vanilla-js polyfill (with
start
attribute support)
-
Scoped Styles by Simon Madine
- jQuery Plugin to enable the scoped attribute on style blocks so they only affect their parent element's children.
- Scoper by Thomas Park
-
picturefill by Scott Jehl
- A polyfill for
<picture>
,srcset
andsizes
.
- A polyfill for
-
respimage by Alexander Farkas
- A polyfill for
<picture>
,srcset
andsizes
with smart resource selection
- A polyfill for
-
dropfile.js by Andrew Dodson
- Creates the FileReader part of the FileAPI via Silverlight for drag and drop files
-
FileSaver.js by Eli Grey
- Implements
saveAs()
- Includes
BlobBuilder
shim
- Implements
-
mOxie Polyfill extracted from Plupload
- FileReader, drag and drop
- XHR2 shim for storing on IE<10, FormData
- Flash fallback
- File input 'overlay'
-
FileReader.js by Jahdrien
- Creates FileReader and FileAPI using Flash, jQuery and jQuery UI
- No drag and drop support!
-
FileAPI by Konstantin Lebedev (© Mail.ru Group)
- Multiupload: all browsers that support HTML5 or Flash
- Drag'n'Drop upload: files (HTML5) & directories (Chrome 21+)
- Upload one file: all browsers
- Working with Images: IE6+, FF 3.6+, Chrome 10+, Opera 11.1+, Safari 5.4+
-
idb.filesystem.js by Eric Bidelman
- HTML5 Filesystem API polyfill that uses IndexedDB as a storage layer.
-
window.saveAs
by Andrew Dodson- Simple shim (for IE10 current Chrome and FireFox)
-
jDataView by vjeux
-
DataView
polyfill for structured data
-
- Typed Arrays by Joshua Bell
-
getUserMedia.js by Addy Osmani provides a cross-browser shim for
getUserMedia()
camera access. - webrtc4all by Doubango Telecom provides the WebRTC APIs for Safari, Opera Classic and IE via an NPAPI/ActiveX plugin.
- Temasys WebRTC Plugin by Temasys provides the WebRTC APIs for Safari and IE via an NPAPI/ActiveX plugin.
-
jebgl
- Uses a Java applet to emulate.
-
webgl-compat
- maps the API to 2D canvas
- cwebgl
- IEWebGL
-
easyXDM by Sean Kinsey
- Implements XDM and RPC in most browsers since IE6. Also ships with an endpoint for exposing ajax across the domain boundary.
- postMessage jquery plugin by Ben Alman
-
XDomain by Jaime Pillora
- Transparently enable cross-domain XMLHttpRequest by adding a small
proxy.html
on the destination domain*
- Transparently enable cross-domain XMLHttpRequest by adding a small
-
pmxdr by Eli Grey
- Implements a CORS-compliant cross-domain
XMLHttpRequest
withpostMessage
. Note that sites being requested must have a pmxdr host.
- Implements a CORS-compliant cross-domain
-
libxdr by Eli Grey
- Implements a CORS
XMLHttpRequest
drop-in using pmxdr.
- Implements a CORS
- postmessage-proxied-xhr (PPX) by Atul Varma
-
flXHR by Kyle Simpson
- Provides XHR API using Flash transport mechanism. Target server must have a
crossdomain.xml
policy file.
- Provides XHR API using Flash transport mechanism. Target server must have a
-
Flow
- implements DOM3 in IE6+
-
DOM-shim
- implements DOM4 in IE8+
-
DOM4 by Andrea Giammarchi
- HTMLElement
prepend
,append
,before
,after
,replace
, andremove
- Also:
classList
,matches
, andCustomEvent
- W3C Specs compatible and fully tested
- HTMLElement
-
IE8 DOM Level 2 by Andrea Giammarchi
- W3C Events, included custom bubbling events, for IE8
document.head
- url.js implements the W3C URL API, by Erik Arvidsson
-
DOM Keyboard Event Level 3 polyfill by Егор Халимоненко
- with optional IE6–8 support
-
DOMImplementation.prototype.createDocument
by Brett Zamir -
navigator.language
very simple shim by Brett Zamir -
document.currentScript
by James M. Greene
- classList.js by Remy Sharp
- classList.js by Eli Grey
-
Minimal
classList
shim by Devon Govett
-
EventSource
by Remy Sharp -
jQuery.EventSource
by Rick Waldron -
EventSource
by Yaffle -
EventSource
by AmvTek- Provides in-browser Unit Tests suite
- Documents what needs to be considered when patching
EventSource
-
Hand.js by DeltaKosh
- Implements the Pointer Events API
-
Pointy.js by Vistaprint
- Implements the Pointer Events API
-
Pointer Events Polyfill by jQuery (originally part of Google Polymer)
- Implements the Pointer Events API
-
ie-touch.js by Andrea Giammarchi
- Implements the W3C Touch Events API for IE Mobile and Tablets
-
Pointer Events Polyfill by Kent Mewhort
- Implements
pointer-events: none
in IE and other non-supporting browsers.
- Implements
-
jquery.pointer-events-polyfill by Sebastian Langer
- Adds
pointer-events: none|all;
drop-in-support for all non-supporting browsers.
- Adds
-
selecting by EvandroLG
- A library that allows you to access the text selected by the user
-
Rangy by Tim Down
- Implements DOM Range and Selection APIs in IE < 9.
- selection-polyfill by Wesley Luyten
-
transitionEnd
- Agnostic, cross-browser lib. Work with the
transitionend
event.
- Agnostic, cross-browser lib. Work with the
-
insertAdjacentHTML.js by Eli Grey, implements
insertAdjacentHTML
-
outerHTML.js by Eli Grey, implements
outerHTML
-
DOMParser HTML extension by Eli Grey, implements DOMParser
text/html
support
-
js-xpath
- Provides
document
withevaluate
,createNSResolver
,createExpression
- Adds support for
XPathResult
,XPathNSResolver
, andXPathExpression
.
- Provides
- wicked-good-xpath rewrite of js-xpath with support for newer (>9) IE versions
Fake workers are useful for unit testing or for fallback behavior on non-supporting browsers
- fakeworker
- Web Worker API shim
-
Simulated Web Workers by Timothy Guan-tin Chien
- Web Workers for IEs and Mobile Safari; uses
iframes
to create separate environments for workers
- Web Workers for IEs and Mobile Safari; uses
- EasyWebWorker by Rameş Aliyev
-
Array.prototype.slice
adds ability to treat DOM elements as arrays. This behavior is not required by any standard given that it applies to host object behavior (which is implementation-dependent), but it is not forbidden either. -
Array Generics
- Implementation of standard Array methods (introduced in ECMAScript 5th edition) and shorthand generics (JavaScript 1.8.5)
- Browser support: Internet Explorer 6+, Firefox 1.5+, Chrome, Safari, Opera.
-
Array.prototype
methods from MDN:indexOf
,lastIndexOf
,forEach
,every
,filter
,some
,map
,reduce
,reduceRight
-
Function.prototype.bind
from MDN. - es5-shim by Kris Kowal, Tom Robinson, community.
-
Xccessors by Eli Grey.
- Implements ES5 accessors (getters and setters) for browsers supporting legacy methods and/or legacy methods for browsers supporting ES5.
-
getters and setters by the IE team.
- Pick up get/set'ers for DOM elements in IE8
- json2.js by Douglas Crockford
- json3.js by Kit Cambridge
- ddr-ecma5 by David de Rosier
- augment.js by Oliver Nightingale
-
String.js by Brett Zamir
- Allows array-like accessors on strings created via
new String()
(admittedly, not very useful)
- Allows array-like accessors on strings created via
- es6-shim by Paul Miller
- core-js by Denis Pushkarev
-
WeakMap
,Map
,Set
,HashMap
- ES6 Collections by Brandon Benvie -
Function.create
by Bjarke Walling -
String.prototype.contains
by Robert Kowalski -
Object.observe
polyfill by Massimo Artizzu - ES6 shim by inexorabletash
-
ES6
Map
,Set
,WeakMap
by EliSnow -
Object.assign
polyfill by Michał Jezierski - implementation from MDN article
-
es6-promise
- Polyfill for JavaScript Promises, based on RSVP.js but matches ES6 API
-
P.js
- An agnostic, cross-browser and very lightweight library to help you to work with Promise in JavaScript.
-
rsvp.js
- Implementation of Promises/A with mixin for turning objects into event targets.
-
lie
- lie is a small, performant promise library implementing the Promises/A+ spec (Version 1.1).
-
cssFx - by Ivan Malopinsky
- Standalone, lightweight, client-side JS; supports almost all CSS3 properties
-
CSS Crush
- A PHP based CSS pre-processor for handling vendor prefixes, CSS variables, data-uris and minification
-
CSS Agent by Keith Clark
- A ASP.Net based CSS pre-processor for handling vendor prefixes, CSS variables, and minification
- jQuery Css3 Finalize by Han Lin Yap
- -prefix-free by Lea Verou
-
Autoprefixer by Andrey Sitnik
- A fast post-processor that uses the data on current browser popularity (caniuse.com) and adds their vendor prefixes or other required syntax changes. Great integration with Grunt, Rails, Sublime Text, and others.
- selectivizr by Keith Clark
- cssParentSelector by Kasper Mikiewicz
-
CSS3/4
querySelectorAll
andmatches
polyfill by Егор Халимоненко. Pure JS with optional IE6/7 support. Currently CSS4 Selector API supporting:- subject of a selector:
div! a[href*=twitter]
-
:scope
pseudo-class::scope>*:nth-child(2n+1)
- nodesRef:
document.querySelector("a", <div>)
-><a>
child of<div>
- subject of a selector:
Values and Units, spec
-
CSS3 - REM Unit conversion by Chuck Carpenter and Lucas Serven
- Evaluates stylesheets for
REM
declarations, converts them to pixels and appends to theHEAD
. Has no dependencies, but can easily be implemented with Modernizr/Yepnope for loading.
- Evaluates stylesheets for
-
Units by Grady Kuhnline
- Units is a JavaScript library for converting between angle and length units (including the
rem
unit). Both are intended for use within other libraries that need to convert between acceptable CSS units when creating polyfills.
- Units is a JavaScript library for converting between angle and length units (including the
-
viewport-units-buggyfill by Rodney Rehm
- Viewport units in Safari and IE9, and slightly hackier mode that puts them in
calc()
- Viewport units in Safari and IE9, and slightly hackier mode that puts them in
-
vminpoly by Sebastian Ferreyra
- A polyfill for CSS units
vw
,vh
&vmin
.
- A polyfill for CSS units
-
Prefixfree - Viewport Relative Units Plugin by Lea Verou
- Another
vw
,vh
, andvmin
polyfill - Requires prefixfree (2kb).
- Another
-
cssMinMax by Russ Porosky
-
min()
andmax()
jQuery plugin polyfill - Includes JSCSSP, so it's a bit large
-
-
jQuery.object-fit.js by Steve Workman (fork of Simon Schmid's work)
- CSS3 object-fit via jQuery plugin API. Currently supports:
object-fit: contain|cover;
(for developing standard)
- CSS3 object-fit via jQuery plugin API. Currently supports:
-
object-fit.js by Anselm Hannemann (and Christian Schaefer)
- CSS3
object-fit
via vanilla JS polyfill. Currently supports:object-fit: contain|cover|fill
(for CR standard)
- CSS3
- -image-set on img elements by Fabian Tollenaar
Backgrounds and Borders, spec
-
CSS3 PIE by Jason Johnston
- CSS3 decoration rendering for IE 6-9. Supports:
border-radius
,box-shadow
, multiple backgrounds, linear gradients,border-image
- CSS3 decoration rendering for IE 6-9. Supports:
-
background-size polyfill by Louis-Rémi Babé
-
background-size
for IE7 and IE8 via Microsoft's proprietary CSS behavior /.htc-script
-
-
background-size emu by Metafalica
- a better
background-size
polyfill that doesn't need an.htc
script
- a better
Basic user interface, spec
-
jQuery Text Overflow plugin by Devon Govett, Andrew A. Kononykhin, Micky Hulse
-
text-overflow
via jQuery plugin API (for developing standard)
-
-
borderBoxModel by Alberto Gasparin
-
box-sizing: border-box;
javascript polyfill for IE6+
-
-
box-sizing-polyfill by Christian “Schepp” Schaefer
-
box-sizing: border-box;
for IE6 and IE7 via Microsoft's proprietary CSS behavior /.htc-script
-
-
Borderbox for Compass by Richard Herrera
-
box-sizing: border-box;
polyfill for SASS/Compass. Outputs equivalent CSS for IE6 & 7
-
Media Queries Level 3, spec
- css3-mediaqueries-js
-
Respond by Scott Jehl
- A fast & lightweight polyfill for min/max-width CSS3 Media Queries (for IE 6-8, and more)
-
mediatizr by Aurélien Delogu
- Responsive-oriented CSS3 media queries polyfill
-
matchMedia by Scott Jehl, Paul Irish, Nicholas Zakas
- A standardized way to check media query matching in script.
-
jQuery Media Helpers by Scott Jehl
- Some media query and cross-browser responsive design helpers, abstracted from jQuery Mobile
-
pointeraccuracy.js by n-fuse
- Implementation of the
pointer
media query
- Implementation of the
Media Queries Level 4, spec
-
mq4-hover-shim
- A shim for the
hover: hover
media query
- A shim for the
Conditional rules, spec
- CSS.supports() by Han Lin Yap
- CSS.supports polyfill by Егор Халимоненко
-
@supports polyfill by Krystian Jarmicki
- Polyfills
window.CSS.supports()
method and@supports
rules in stylesheets
- Polyfills
Text decoration, spec
-
jQuery Text Shadow by heygrady
-
text-shadow
action via jQuery plugin API
-
Font events, spec
- fontloader by Bram Stein
Multi-column Layout, spec
-
CSS3 - Multi Column Updated for HTML5 tags
- Supports:
column-count
,column-width
,column-gap
,column-rule
Original by by Cédric Savarese
- Supports:
Flexible Box Layout, spec
-
Flexie by Richard Herrera
- Flexible box model - legacy spec from 2009. (flexbox) Supports:
box-orient
,box-align
,box-direction
,box-pack
,box-flex
,box-ordinal-group
- Flexible box model - legacy spec from 2009. (flexbox) Supports:
- Flexibility - Flexbox for IE 8/9 (requires special prefixed CSS)
- Any Flexbox polyfill should also be paired with a post-processor like Autoprefixer for generating rules compatible with IE10 and old iOS Safari
Grid Layout, spec
- Grid Layout Polyfill by François REMY
- Grid Layout Polyfill by Han Lin Yap
Template Layout, spec
- CSS Template Layout jQuery plug-in by Alexis Deveria
Regions, spec
- CSS Regions Polyfill by François Remy
Transforms, spec
- Transformie by Paul Bakaus
- CSS Sandpaper by Zoltan Hawryluk
Filter Effects, spec
-
Polyfilter - a CSS Filters Polyfill by Christian "Schepp" Schaefer
- CSS
filter
effects for Chrome 20+, Safari 6+, Firefox 4+, IE 6–9 and some mobile browsers.
- CSS
-
CSS Polyfills by philschatz
- Implements many of the CSS selectors and rules defined in CSS3 Generated and Replaced Content Module and CSS3 Generated Content for Paged Media Module
- microdatajs by Philip Jägenstedt
-
Microdata-JS by Егор Халимоненко
- Pure JS (Extending Element.prototype with IE6+ support)
- notification.js by Andrew Dodson
-
desktop-notify
by Tsvetan Tsvetkov (uses deprecated syntax - createNotification) - html5-notifications by Hendrik Beskow
- xbl.js by Sergey Ilinsky
-
Mozilla Shumway
- Flash VM and runtime written in JavaScript.
-
Gordon
- Javascript that interprets SWFs live. Plays only SWF1 files completely, as well as most of the SWF2 features.
-
Google Swiffy
- Deprecated: See [Link] (https://developers.google.com/swiffy/)
- UserTiming.js by Nic Jansma
-
performance.now()
by Paul Irish -
Core Estimator by Eli Grey, Devin Samarin, and Yorick van Pelt
- A polyfill for
navigator.hardwareConcurrency
.
- A polyfill for
-
hyphenator by Mathias Nater
-
CSS3 defines six properties and an at-rule that influence hyphenation.
hyphenator
is a JavaScript implementation with pattern files for many languages.
-
CSS3 defines six properties and an at-rule that influence hyphenation.
- JavaScript Joystick by Carl Woffenden
- Boomstick by Daniel X. Moore
-
xywh.js
- Polyfill that lets you crop images and videos simply by using specific
x
,y
,w
(idth), andh
(eight) parameters from their URIs. - The library implements the spatial media fragments dimension of the W3C Media Fragments URI specification.
- Polyfill that lets you crop images and videos simply by using specific
-
mediafragments.js
- Polyfill that lets you place deep links into videos and audios simply by using a specific
t
(ime) parameter from their URIs. - The library implements the temporal media fragments dimension of the W3C Media Fragments URI specification.
- Polyfill that lets you place deep links into videos and audios simply by using a specific
-
Permission API
- Extended version that stay consistent with the
navigator.permission
API
- Extended version that stay consistent with the
-
Overthrow
-
overflow:auto
detection and polyfill
-
-
iScroll
- The
overflow:scroll
for mobile
- The
-
Scroll Snap
- CSS scroll snapping
RadioNodeList
polyfill-
screenfull.js
- Simple wrapper for cross-browser usage of the JavaScript Fullscreen API
-
<marquee scrollamount="100%">blink</marquee>
- HTML-only polyfill for the no longer supported
<blink>
element.
- HTML-only polyfill for the no longer supported
-
pointeraccuracy.js
- Implementation of the
pointer
media query
- Implementation of the
-
scrollTo(x, y, 'smooth')
- CSSOM View smooth scroll polyfill
-
window.location.origin
fix for IE- A fix to allow you to use window.location.origin consistently
-
W3C Manifest
- W3C Manifest polyfill support for Safari iOS, Windows Phone 8+, Windows 8+, Firefox OS 1.1+, the Android browser and Chrome for Android.
-
console-polyfill by Paul Miller
- Adds no-operation console methods to environments where console is not available. Basically makes console safe to use.
-
Webshims Lib several Polyfills using lightweight capability based loading concept (shiv, innershiv, canvas, forms, ES5,
localStorage
/sessionStorage
, JSON, geolocation) by Alexander Farkas - Assorted file formats decoding of several file formats done in Javascript, documented on the excellent jswiki
- Polyfill.js Polyfills loaded dynamically based on need (list of available polyfills on the linked page) by James Brumond
-
ES5/DOM shim implements DOM API and EcmaScript 5 (and some from ES6), and bug fixing in IE6+ and other browsers:
- Add methods such [
add
/remove
]EventListener
,querySelector
[All
],setSelectionRange
, etc in IE6+ - Add
Element
/Node
properties suchclassList
,children
, [first
/last
]ElementChild
,reversed
,control
,labels
, etc in IE6+ - Add methods such
insertAdjacentHTML
(old FF),stopImmediatePropagation
(Opera < 12) and propertiesreversed
,control
,labels
, etc in W3C browsers - Add ES5/6 methods in all browsers
- Add DOM4 methods
append
,prepend
,after
,before
,replace
,remove
,match
in all browsers - Provide bugs fixing for DOM and ES in IE, Opera, Chrome, FF
- and more with low cost:
- ≈8KiB for W3C browsers
- ≈16KiB for IE8
- ≈18KiB for IE6/7 [gzip]
- Add methods such [
-
aight
- A collection of shims and shams for IE8 and 9, and a nifty CLI tool to make your scripts IE8-friendly.
-
ie7.js, ie8.js, ie9.js by Dean Edwards
- A JavaScript library to make MSIE behave like a modern browser. Many fixes including PNG transparency, CSS styles/selectors, rendering bug fixes, etc.
Edited and maintained by Paul Irish. Contributions from Jonathan Cook, Mark Boas, Michael Behan, Mathias Bynens, Eli Grey, Øyvind Sean Kinsey, and others.