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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
20
0
59 134
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

Ответ принят как подходящий

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

(Цитировать) На самом деле ТОННА вещей изменилась.

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

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

Теперь, если вы выполняете рендеринг в режиме 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-файлов.

Оказалось, что просто изменить MIME-тип заголовка HTTP-ответа было недостаточно; в конечном итоге мне пришлось полностью отказаться от нашего сервлета Javascript, поскольку файлы JS, статически обслуживаемые Apache, отлично работали в IE8 (и я не хотел тратить больше времени на исправление заголовков сервлета).

machineghost 02.04.2009 03:49

И я думал, что схожу с ума !!! Разве это не "стандарт" ??? application / javascript просто ломает мой межсайтовый JSONP с IE 8 ... Спасибо!

jldupont 11.03.2011 17:56

Кажется, это верно даже для IE9.

Pit Digger 12.09.2011 22:30

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

Другие вопросы по теме