Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Я могу проверить, что те, которые размещены с помощью "unique_username", точны!

(цитата) Фактически ТОН вещей изменился.

Во-первых, это ДЕЙСТВИТЕЛЬНО имеет значение, в каком режиме вы находитесь. В IE8 существует 3 (THREE) режима.

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

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

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

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

2.) .getElementsByName(имя);//теперь возвращает только значения CORRECT! nope, not fixed!

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, дизайн/события Better Form Element и т.д. все еще отсутствуют.

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)

Ответ 2

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

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

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

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

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

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

Ответ 4

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