Я вижу много ошибок Javascript в IE8 на страницах, которые нормально работали в IE7 (а также в Firefox, Chrome и Safari). Я знаю, что IE внес некоторые изменения в такие вещи, как безопасность Javascript. Некоторые из них не дают четких сообщений об ошибках - такие вещи, как междоменные нарушения, могут в конечном итоге вызывать очень расплывчатые исключения.
Давайте составим контрольный список главных нарушителей при устранении ошибок Javascript IE8. Перечислите изменение один способа IE8 Javascript, которое могло бы вызвать ошибку Javascript.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел здесь несколько списков: http://social.msdn.microsoft.com/forums/en-US/iewebdevelopment/thread/772e4b07-29e1-4909-b77f-f61c503f9579/
Я не проверял их, и некоторые из них довольно расплывчаты.
Я могу проверить, что сообщения, отправленные "unique_username", точны!
(Цитировать) На самом деле ТОННА вещей изменилась.
Во-первых, ДЕЙСТВИТЕЛЬНО важно, в каком режиме вы находитесь. В IE8 есть 3 (ТРИ) режима.
Теперь, если вы выполняете рендеринг в режиме IE5 / IE7, ничего не изменится, за исключением того, что будет добавлено несколько методов, которые не должен мешают вашей странице.
Однако, если, как и большинство, вы работаете с заданным типом документа и, следовательно, в режиме стандартов IE8, произошли следующие изменения.
1.) document.getElementById( id ); //now only returns the CORRECT matches!
2.) .getElementsByName (имя); // теперь возвращает только ПРАВИЛЬНЫЕ совпадения! неа, не исправлено!
3.) .getAttribute( name ); //returns the CORRECT value for the given attribute!
4.) .setAttribute( name, value ); //actually SETS the name/value CORRECTLY (no more cAmElCaSe crud)!
5.) CSS Expressions are NO LONGER allowed (deprecated)
6.) Operation Aborted errors will still be thrown (in some cases) however the cases are fewer, and the error won't kill the entire page/DOM
7.) The attributes[] array on elements should (from the RC build onwards) be correct in terms of contents, have a length, etc.
8.) Button elements now submit the contents of the value attribute, NOT the HTML contents of the Button Tag
Также было внесено множество исправлений CSS 2.1, поэтому вещи, которые раньше казались странными или требовали взлома, должны быть намного лучше. (подробнее об альфа / прозрачности см. ниже - произошли большие изменения)
Подробнее см. Блог IE.
Также см. Отслеживание веб-ошибок для детальной информации об ошибках, исправлениях для IE8 (и всех других браузеров).
SVG, закругленные углы, прослушиватели событий на основе ECMAScript, улучшенный дизайн / события элементов формы и т. д. Все еще отсутствуют.
PS Если у вас есть особые проблемы, сообщите нам, и мы поможем вам их найти. ;-)
Обновления:
События window.resize в настоящее время не работают в IE8 Beta2 и IE8 Partner Release 1 (не срабатывают) теперь исправлен в сборке RTM
window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)
Вот ДЕЙСТВИТЕЛЬНО забавный (/ sarcasm off), который я обнаружил. Если у вас MIME-тип «application / javascript», а не «text / javascript», Internet Explorer:
A) игнорировать неожиданный тип MIME и все равно использовать файл?
Б) вообще не загружать файл?
C) возьмите первую сотню или около того строк файла, добавьте их в другой файл JS, который идет перед ним в HTML, а затем выдаст вам всевозможные ошибки, потому что ваш неупорядоченный полуфайл + фактический файл не Работа?
Правильно, ответ C ... Я не шучу. Раньше мы использовали тип MIME «application / javascript», чтобы предотвратить кеширование JS-файлов в IE6 / 7, и в результате я потратил целый день, пытаясь выяснить, почему IE8 выдает действительно сумасшедшие ошибки. К счастью, я наконец понял, что происходит, когда он сказал мне, что у меня была ошибка в строке 650 файла из 500 строк (а затем, когда я просмотрел файл в отладчике, я увидел добавленный другой файл).
Мораль истории: если вы хотите, чтобы IE8 работал, НЕ используйте "application / javascript" для MIME-типа ваших JS-файлов.
И я думал, что схожу с ума !!! Разве это не "стандарт" ??? application / javascript просто ломает мой межсайтовый JSONP с IE 8 ... Спасибо!
Кажется, это верно даже для IE9.
Немного поздно для этой вечеринки, но, исследуя тот же вопрос, я наткнулся на эту статью MSDN, в которой освещаются функции, не поддерживаемые движком JScript IE 8.
Оказалось, что просто изменить MIME-тип заголовка HTTP-ответа было недостаточно; в конечном итоге мне пришлось полностью отказаться от нашего сервлета Javascript, поскольку файлы JS, статически обслуживаемые Apache, отлично работали в IE8 (и я не хотел тратить больше времени на исправление заголовков сервлета).