Handle some quirks mode issues

- IE8 and 9 do not support array-style string parsing in quirks mode: ```"abcdef"[0]``` returns ```""``` whereas ```"abcdef".substr(0,1)``` returns ```"a"```
- ```document.fireEvent()``` seems to return ```Invalid argument``` for almost every argument passed to it in IE8 and IE9 in quirks mode so I wrapped it in a try/catch block to be safe