A veces es difícil recordar todas las bondades que Internet Explorer otorgó antes de que Internet Explorer 6 se convirtiera en el flagelo de los desarrolladores web del mundo. Lo creas o no, Internet Explorer 4-6 es altamente responsable del diseño web tal y como lo conocemos hoy en día. Bastantes características propias del navegador se convirtieron de facto en estándares, e incluso llegaron a alcanzar el nivel de especificaciones HTML 5. Podría ser difícil de creer el que Internet Explorer sea amigable con un montón de características que asumimos ya como garantizadas en la navegación web, pero un vistazo rápido nos enseñará que así es.

En muchos aspectos, document.all fue la primera versión de document.getElementById(). Todavía se usa el acceso a la ID de un elemento, tanto a través de document.all, como de document.all.miCapa o document.all["miCapa"]. La principal diferencia fue que Internet Explorer solía usar la función, la cual se relacionó con todos los demás métodos de acceso, como por ejemplo document.images y document.forms.
Internet Explorer 4 fue también el primer navegador en introducir la habilidad de obtener una lista de elementos por nombre de etiqueta vía document.all.tags(). Se mire como se mire, ésta fue la primera versión de document.getElementsByTagName()y trabajó exactamente de la misma manera. Si quieres obtener todos los elementos <div>, usas document.all.tags("div"). Aún en Internet Explorer 9, este método todavía existe y es un alias de document.getElementsByTagName().
Internet Explorer 4 también nos introdujo la que quizás es la más popular extensión propietaria del DOM de todos los tiempos: innerHTML. Parece que los chicos de Microsoft descubrieron el camino de la iluminación al montar un acceso directo con programación al DOM, como con outerHTML. En cuanto se comprobó su usabilidad, fueron estandarizados en el HTML5. El uso del texto plano era suficientemente importante como para que se introdujera textContent[2], que actúa de manera similar a innerText.
De la misma forma, Internet Explorer 4 introdujo insertAdjacentHTML(), otra vía para insertar texto HTML en un documento. Aunque este método era un poco más largo, también fue codificado para HTML5 y es ahora extensamente soportado por los navegadores.
Microsoft por el contrario presentó el flujo de eventos. Ellos creyeron que el evento debería empezar en el objetivo actual para después extenderse a sus parientes. Las versiones de Internet Explorer anteriores a la 9 sólo soportaron el flujo de eventos. Aunque la especificación oficial de eventos del DOM evoluciona para incluir ambos métodos, la captura y el flujo de eventos, la mayoría de desarrolladores usa el flujo de eventos exclusivamente, con la captura de eventos siendo reservada para unos cuantos apaños y trucos enterrados profundamente en las entrañas de las bibliotecas de Javascript.
Además de crear el flujo de eventos, Microsoft también creó un manojo de eventos adicionales que llegaron a ser estandarizados:
El manejo en el lado del cliente de XML fue parte de la original implementación de Internet Explorer de XMLHttpRequest, introducida primero como un objeto ActiveX en Internet Explorer 5. La idea era habilitar la recuperación de documentos XML del servidor en una web y permitir a JavaScript ese XML como un DOM. Las versiones de Internet Explorer requieren que uses un nuevo ActiveXObject("MSXML2.XMLHttp"), produciendo una versión dependiente que requería que los desarrolladores tuvieran que hacer piruetas para testear y usar la más reciente versión. De nuevo una vez más, Firefox limpió el estropicio creando XMLHttpRequest, que duplicaba exactamente la versión de la interfaz de Internet Explorer. Otros navegadores copiaron la implementación de Firefox, otorgando el liderazgo al fin a Internet Explorer 7 creando una versión gratuita de ActiveX. Por supuesto, XMLHttpRequest fue la fuerza conductora detrás de la revolución de Ajax con la que todo el mundo se animó a lanzarse sobre Javascript.
Fuente: www.nczonline.net/blog