There are 5 different levels of the DOM. Web browsers offer various amounts of support for each level and they each implement that support in different ways. Internet Explorer has implemented its support very differently than other browsers in the past. They used a completely different event model.
Internet Explorer, prior to IE9, required a lot of hacks to get certain functions to work properly. Currently, Internet Explorer implements web standards more closely than how they used to. Also, with the evolution of jQuery, web browser compatibility issues have been reduced.