Основной язык Javascript по большей части соответствует (см. Версию 3 ECMAScript, выпущенную в 1999 г.)
Реализация DOM вызывает головную боль. Частично потому, что в какой-то момент спецификации DOM не было, поэтому браузеры могли делать все, что им, черт возьми, нужно с точки зрения составления правил доступа и управления HTML-элементами на веб-странице.
Например:
window.addEventListener
для браузеров, поддерживающих DOM, а window.attachEvent
для IE.
textContent
для браузеров, поддерживающих DOM, innerText
для IE.
- Утечка памяти для подключенных обработчиков событий в IE, поэтому вам придется выгружать их вручную
getElementById
глючит в IE и Opera, потому что возвращает элементы по имени
getAttribute('href')
возвращает противоречивые значения
Есть также проблемы, связанные с поддержкой CSS в браузере.
- IE6 не поддерживает собственные PNG, поэтому вы вынуждены использовать библиотеку фильтров
- Ошибка анимации в IE, связанная с непрозрачностью фильтра
Несоответствия основных языков могут быть такими, как
- Несоответствия между двигателями регулярных выражений
Но да, вкратце, дело в том, что раньше не было стандарта. С тех пор w3 разработал стандарты, но у каждого поставщика браузеров есть свой способ его реализации. Нет руководящего органа, который заставлял бы продавцов полностью применять спецификацию.