Каковы наиболее вероятные причины ошибок Javascript в IE8? - PullRequest
20 голосов
/ 11 декабря 2008

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

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

Ответы [ 4 ]

13 голосов
/ 12 декабря 2008

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

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

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

  • Причуды IE5 - у вашей страницы нет типа документа, страница отображается так же, как в 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 Blog .

Также см. 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)
11 голосов
/ 01 апреля 2009

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

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

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

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

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

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

2 голосов
/ 11 декабря 2008

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

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

1 голос
/ 04 сентября 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...