#javascript #jquery #html #internet-explorer #meta-tags
#javascript #jquery #HTML #internet-explorer #мета-теги
Вопрос:
У меня есть приложение, написанное на Java, и связанное с ним веб-приложение, написанное в основном на javascript. Я работал на IE7 и у меня не было проблем. Но недавно я обновился до IE8, и с тех пор я столкнулся с множеством проблем… Неважно, какие версии jquery я использовал, он вылетает. У меня нет никаких сообщений об ошибках javascript, но CSS и другие методы не использовались… Я нашел здесь, на StackOverflow, парня с аналогичной проблемой, он добавил это в свой заголовок: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Действительно, у меня это работает, но я не знаю, что это меняет на моей странице. Изменяет ли эта мета только интерпретацию CSS? Javascript?
Спасибо за ваш ответ
Комментарии:
1. Для этого нужна гораздо более конкретная информация. Какие именно вещи происходят? Что вы подразумеваете под «сбоями»?
2. Проблема, скорее всего, в вашем javascript. Начните с устранения неполадок, пока они снова не завершатся сбоем, а затем дополнительно изолируйте проблему. Скорее всего, это не код jQuery, а вы
3. Спасибо за такое объяснение… Было бы странно, что мой javascript на IE7 работает отлично, но не на IE8… Я собираюсь подробнее остановиться на этом, но я сомневаюсь, что IE невиновен…
Ответ №1:
X-UA-Compatible
это ответ Microsoft на то, чтобы заставить IE переключать режимы рендеринга для сайта. Основная проблема, с которой сталкиваются компании при обновлении своих установок IE, — это совместимость с веб-приложениями, созданными для запуска на более старых версиях IE. Этот мета-флаг используется для указания более новым версиям IE, как они должны обрабатывать текущий документ.
В вашем примере X-UA-Compatible
значение указывает IE эмулировать рендеринг IE7. Если пользователь посетил ваш сайт с использованием IE8, он увидит этот флаг и переключится в режим совместимости с IE7 и имитирует его возможности. Вы можете прочитать больше об этом в разделе Определение совместимости документов в MSDN.
Однако, если ваш JS ломается в браузере, вам следует это исправить, а не полагаться на такого рода дешевый взлом (на мой взгляд). Хотя это полезно для быстрого исправления проблемы, вы не можете гарантировать, что это всегда будет работать, и вы можете столкнуться с проблемами в других браузерах, которые не понимают, X-UA-Compatible
какой из них является собственностью IE.
Если вам трудно исправить свою проблему в исходном коде, возможно, вы можете опубликовать здесь новый вопрос, чтобы пользователи SO могли ознакомиться.
Ответ №2:
Только что добавленная вами мета указывает IE использовать javascript и движок рендеринга IE7, даже если это более новая версия браузера. MS реализовала такой заголовок, чтобы избежать взлома сайтов, зависящих от конкретного поведения этой версии. Как упоминает Эверт, это, скорее всего, ошибка в вашем коде, но без дополнительной информации трудно сказать, что является источником. Я бы открыл отладчик IE (F12) и попытался добраться до строки, которая «сбой».
Если CSS также не работает (не загружается), проверьте маршруты, которые вы используете для ссылки на файлы CSS / JS. Что-то вроде использования » вместо ‘ /’ в path может работать в IE6 / 7, но не в более новых версиях (поскольку они намного более строгие), и то же самое может произойти с неэкранированными символами. Кроме того, убедитесь, что ваше приложение обслуживает файлы с правильным содержимым / типом.
Ответ №3:
Когда IE видит X-UA-Compatible
мета-тег, он использует его для определения режима рендеринга страницы.
IE8 поставляется со встроенным режимом обратной совместимости, который позволяет ему вернуться к рендерингу страниц в режиме IE7. Этот мета-тег используется IE для указания ему использовать этот режим.
Идея в том, что если ваша страница работала в IE7, но не в IE8, то добавление этого тега позволило бы вашей странице продолжать работать при обновлении пользователей.
В целом, это верно, но стоит отметить, что режим IE7 в IE8 не идентичен подлинному браузеру IE7: у него есть некоторые собственные особенности и ошибки, которые не отображаются в IE7.
В дополнение к указанию режима рендеринга в мета-теге, его также можно указать из браузера. В IE8, если вы нажмете F12, чтобы открыть окно инструментов разработчика, вы можете изменить режим рендеринга отсюда. Это позволяет увидеть, какой режим использует сайт. Это также позволит вам проверить, поможет ли изменение режима, без фактического добавления мета-тега. IE8 также имеет параметр конфигурации, который может указывать, что по умолчанию для сайтов интрасети используется режим IE7, опять же без использования мета-тега.
Однако, после всего этого, я бы также сказал, что режим совместимости, вероятно, не лучший подход к решению вашей проблемы. Вы заявляете, что происходит сбой приложения. На самом деле вы недостаточно подробно описали сбой, чтобы я мог его диагностировать здесь, но вы упоминаете jQuery. Особенность jQuery в том, что он явно предназначен для работы во всех версиях всех браузеров; Мне было бы интересно узнать, что именно здесь происходит не так, но я сомневаюсь, что виноват сам jQuery.
Пожалуйста, предоставьте немного больше информации о ваших ошибках, и, возможно, мы сможем вам помочь (хотя я бы предложил задать новый вопрос по этому поводу, поскольку тема будет сильно отличаться от этой).