Shimprove

Shimprove is an evil piece of javascript that helps Internet Explorer render HTML5 elements in HTML and in javascript.

Shimprove is evil because it hijacks native javascript functions on all elements, like createElement and cloneNode in order to protect HTML5 elements added via javascript. Native functions should never be overwriten! Furthermore, these protections could be offered by popular javascript libraries - presently they are not. Therefore, Shimprove exists as an evil solution, as a proof of concept, as free research, and as a call to action. Popular javascript libraries should improve themselves by implementing methods like these, and they should go the extra mile to handle HTML5 usecases in Internet Explorer, rendering this evil script entirely unnecessary.

Shimprove in action

Review an example of a page not running Shimprove, but running a popular shim script which I have also contributed to. This page contains a section element written into the page HTML, one section element added through javascript, another through javascript via cloneNode, a clone of the cloneNode, one via jQuery, and one via YUI.

Review an example of a page running Shimprove. This page also contains a section element written into the page HTML, one section element added through javascript, another through javascript via cloneNode, a clone of the cloneNode, one via jQuery, and one via YUI.