HTML5 and ES5 shim.
- Replace reserved words, eg. "throw" with [...] notation to prevent syntax errors in IE (FF, Chrome etc. all support this)
eg. "object.throw();", "object.instanceof();"
- Hook eval() to filter JS
- Remove execScript() in IE (non-standard)
- Replace DOM with virtual DOM in IE
- It may be possible to do all this without having to replace the DOM - hooking property/method accesses could be enough