Skip to content


Subversion checkout URL

You can clone with
Download ZIP
JavaScript shims and shams for making IE8-9 behave reasonably
JavaScript Makefile

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

It's Aight

Aight is a collection of shims and polyfills that get IE8 up to speed with a bare minimum of HTML5 compatibility, providing all of the interfaces necessary to do HTML-only DOM manipulation with d3.js (and other libraries that rely on those interfaces). It includes:

  • es5-shim, which implements all of the Array prototype methods in the ES5 spec, and other goodies.

  • classList.js, which implements the Element prototype's classList property, for intelligently adding and removing classes from HTML elements.

  • A shim for CSSStyleDeclaration's setProperty() and removeProperty() methods

  • A shim for document.createElementNS(), which throws an error if you pass it an actual namespace (which IE8 doesn't support). This merely provides a facade of interoperability with d3, which calls createElementNS() even in cases where the parent's namespaceURI is undefined (as is the case in HTML5, but not XHTML).

  • A shim for window.getComputedStyle()

  • A shim for the Element prototype's addEventListener() and removeEventListener() methods, per the DOM2 EventTarget.


Using aight is simple. First off, be sure that you're using the right DOCTYPE in your HTML:

<!DOCTYPE html>

And in your <head>, include the following <meta> tag:

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

These two steps ensure that IE8 will run in standards mode. Finally, include aight.min.js (or the un-minified version, aight.js, if you're debugging aight itself) in a conditional comment inside the <head>:

<!--[if lt IE 9]>
<script type="text/javascript" src="aight.min.js"></script>

Bringing it all together, you end up with:

<!DOCTYPE html>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <!--[if lt IE 9]>
    <script type="text/javascript" src="aight.min.js"></script>

For your convenience, this snippet is included with aight in template.html.

Something went wrong with that request. Please try again.