Каковы наиболее вероятные причины ошибок Javascript в IE8?

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

Давайте создадим контрольный список главных нарушителей, когда мы устраняем ошибки IE8 Javascript. Перечислите одно изменение в способе JavaScript Javascript IE8, которое может вызвать ошибку Javascript.

11.12.2008 16:13:39
4 ОТВЕТА
РЕШЕНИЕ

Я могу убедиться, что сообщения, отправленные с помощью «unique_username», являются точными!

(цитата) На самом деле тонна вещей изменилась.

Прежде всего, это действительно важно, в каком режиме вы находитесь. В IE8 есть 3 (ТРИ) режима.

  • IE5 Quirks - ваша страница не имеет типа документа, страница отображается так же, как IE5
  • Режим стандартов IE 7 - у вас есть тип документа, но вы либо отказались от режима стандартов IE8, либо работаете на локальном хосте, либо в «режиме совместимости»
  • Режим стандартов IE 8 - у вас есть тип документа, и вы находитесь в INTRANET (режим по умолчанию)

Теперь, если вы выполняете рендеринг в режиме IE5 / IE7, то ничего не изменится, за исключением того, что будет добавлено несколько методов, которые не должны мешать вашей странице.

Однако, если, как и большинство, вы работаете с установленным типом документа, и, таким образом, в режиме стандартов IE8 произошли следующие изменения.

1.) document.getElementById( id ); //now only returns the CORRECT matches!

2.) .getElementsByName (name); // теперь возвращает только ПРАВИЛЬНЫЕ совпадения! Нет, не исправлено!

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 блог для деталей.

Также см. Web Bug Track для детальной детализации ошибок, исправлений для IE8 (и всех других браузеров).

SVG, закругленные углы, прослушиватели событий на основе ECMAScript, лучший дизайн элементов / событий и т. Д. По-прежнему отсутствуют.

PS Если у вас есть конкретные проблемы, дайте нам знать, и мы поможем найти их для вас. ;-)

Обновления:

События window.resize в настоящее время прерываются в бета-версии IE8, а партнерская версия IE8 1 (не будет запускаться) теперь исправлена ​​в сборке RTM

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)
13
19.03.2009 20:36:00

Я нашел несколько списков здесь: http://social.msdn.microsoft.com/forums/en-US/iewebdevelopment/thread/772e4b07-29e1-4909-b77f-f61c503f9579/

Я не проверял это, и некоторые из них довольно расплывчаты.

2
11.12.2008 16:31:23

Вот ДЕЙСТВИТЕЛЬНО забавный (сарказм), который я обнаружил. Если у вас есть MIME-тип «application / javascript», а не «text / javascript», Internet Explorer будет:

А) игнорировать неожиданный тип MIME и использовать файл в любом случае?

Б) не загружать файл вообще?

C) возьмите первые сто или около того строк файла, добавьте их к другому файлу JS, который находится перед ним в HTML, и затем выдайте вам всевозможные ошибки, потому что ваша половина файла не соответствует порядку + фактический файл не Работа?

Правильно, ответ С ... Я не шучу. Мы использовали MIME-тип «application / javascript» для предотвращения кэширования файлов JS в IE6 / 7, и в результате я потратил впустую целый день, пытаясь выяснить, почему IE8 выдавал действительно сумасшедшие ошибки. К счастью, я наконец понял, что происходит, когда мне сказали, что у меня ошибка в строке 650 файла из 500 строк (а затем, когда я просмотрел файл в отладчике, я увидел другой файл с добавками).

Мораль истории: если вы хотите, чтобы IE8 работал, НЕ используйте «application / javascript» для типа MIME ваших файлов JS.

11
22.11.2016 20:37:52
Оказалось, что просто изменить тип MIME заголовка ответа HTTP было недостаточно; в конечном итоге я решил полностью отказаться от нашего сервлета Javascript, так как JS-файлы, статически обслуживаемые Apache, прекрасно работали в IE8 (и я не хотел тратить больше времени на исправление заголовков сервлета).
machineghost 1.04.2009 23:49:09
И я думал, что схожу с ума !!! Разве это не должно быть "стандартным" ??? application / javascript просто ломает мой межсайтовый JSONP с IE 8 ... Спасибо!
jldupont 11.03.2011 14:56:31
Это похоже на правду даже для IE9.
Pit Digger 12.09.2011 18:30:51

Немного опоздал на эту вечеринку, но, исследуя тот же вопрос, я наткнулся на статью MSDN, в которой освещаются функции, не поддерживаемые движком JScript в IE 8.

1
4.09.2012 19:46:59