Веб-приложение ASP.net, разработанное в IE6, имеет проблему совместимости в IE8 - PullRequest
1 голос
/ 21 апреля 2011

Веб-приложения, которые я сейчас использую, предназначены для работы в IE6.Но теперь мой клиент хочет обновить приложение до IE8.Я установил IE8 в своей системе, но теперь веб-страницы плохо выровнены, как в IE6.

Текстовые поля и некоторые другие поля, перемещенные с их исходных позиций, также изменились их длины и ширины.Некоторые люди предложили поместить тег <meta http-equiv="X-UA-Compatible" content="IE=IE5" > в заголовок раздела HTML-страниц для совместимого режима, но у меня это не сработало.Может ли кто-нибудь помочь мне? ..

Ответы [ 4 ]

1 голос
/ 21 апреля 2011

Я надеюсь, что стиль CSS был применен в отдельной таблице стилей, а не в строке. Если он встроен , лучше всего правильно перестроить эти страницы с нуля. Другие подсказки, что ваш HTML хорош и не нуждается в политике выжженной земли:

  • Он правильно сформирован (правильно закрытые теги, использование кавычек вокруг атрибутов HTML)
  • Использование DIV и SPAN для разметки, а не TABLE повсюду
  • У вас есть DOCTYPE вверху каждой страницы

Если удача на вашей стороне и стиль был отделен от контента, можно было бы создать новую таблицу стилей, которую вы затем используете, чтобы страницы выглядели правильно в IE8 / Firefox / Safari. Затем вы можете использовать Условные комментарии , чтобы вернуться к старой таблице стилей для IE6.

1 голос
/ 21 апреля 2011

Заголовок этого поста подводит итог многого, что плохо в IE6 и почему он сегодня вызывает столько головных болей у веб-разработчиков, а также почему так много компаний так неохотно так долго делают обновление. Однако даже эти компании вынуждены обновляться сейчас, поскольку новые лицензии для IE6 просто недоступны.

Взлом UA-Compatible не сработал, потому что все, что он делает, это говорит IE8 использовать свой «устаревший» механизм рендеринга для эмуляции более старой версии IE. Это звучит так, как будто это должно работать, но, к сожалению, для вас, это только ухудшает совместимость с IE7.

Таким образом, вы можете попробовать режим совместимости с IE7. Это не гарантировано, но я думаю, что это на один шаг ближе к IE6. Вы сможете проверить это, изменив метатег, который у вас уже есть, но вы также можете переключить режим рендеринга в IE8, зайдя в Инструменты разработчика, у которого режим рендеринга переключается в верхней части окна.

Проблема всего этого в том, что это не будет для вас постоянным решением. Даже если вы работаете в режиме совместимости с IE7, нет гарантии, что когда пользователи обновятся до IE9 (что они скоро начнут делать), режим IE7 продолжит работать для вас. И IE10 также находится в разработке.

Если основными проблемами, с которыми вы сталкиваетесь на сайте, являются просто текстовые поля и другие движущиеся объекты, то на самом деле вы делаете это не так уж плохо - некоторые сайты, написанные для IE6, просто слишком сильно сломаны в современных браузерах, чтобы рассмотреть возможность их обновления; они просто должны быть переписаны. Но твое звучит так, будто оно должно быть спасено.

Наиболее вероятный виновник вашей проблемы - Quirks Mode.

Режим Quirks - это режим рендеринга, который используют более старые версии IE (IE6 и более ранние) вместо того, чтобы следовать определенным веб-стандартам. IE6 был первой версией IE, которая поддерживала режим стандартов, хотя по умолчанию он был переведен в режим совместимости с IE5. До этого IE5 использовал только режим причуд. Это, вероятно, объясняет, почему вы советовали использовать режим совместимости с IE5 ... Жаль, что этот совет никогда не сработает.

Существует ряд различий между режимами Quirks и Standards, но основным из них является блочная модель. Короче говоря, в режиме причуд, размер элемента (т.е. его высота и ширина) включает границу и поле, тогда как в стандартном режиме это не так.

Существует целый ряд других различий между этими двумя режимами, но это тот, который действительно вызывает худшие разбитые макеты страниц.

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

Вы также должны убедиться, что у вас есть действительная декларация Doctype в верхней части HTML-кода. Это поможет браузеру выбрать правильный режим рендеринга. Без этого вы можете обнаружить, что время от времени вы все еще переходите в режим причуд.

Я бы настоятельно рекомендовал протестировать сайт в других браузерах, таких как Chrome и Firefox. Это, вероятно, поможет вам, обнаружив другие ошибки в коде, с которыми IE8 может не иметь проблем. Я бы предложил сделать это, даже если конечные пользователи планируют использовать только IE8, потому что, как я уже сказал, они почти наверняка будут обновляться до IE9 в не слишком отдаленном будущем, а IE10 - не так уж долго после этого. IE9 гораздо более совместим со стандартами, чем IE8, и IE10 тоже будет, что означает, что если страница хорошо отрисовывается в Chrome и Firefox, то вы должны быть уверены, что при запуске IE9 и IE10 все будет хорошо Это избавит вас от повторения проблем с IE6-> IE8 через год.

Надеюсь, это поможет.

Если у вас есть какие-то конкретные фрагменты кода, с которыми вам нужна дополнительная помощь, я бы предложил разместить их здесь под новым вопросом.

1 голос
/ 21 апреля 2011

предназначен для работы в IE6

Это ваша проблема.IE6 никогда не был браузером, сильным в стандартах, и поэтому, вероятно, HTML содержит множество подходящих решений - обновление показывает, насколько ужасны они на самом деле.

Посмотрите здесь для смешногопонять, насколько «хорошим» был IE6.

Вы можете либо:

  • Исправить сайт ( настоятельно рекомендуется )
  • Рассказатьклиент остается с IE6

Даже если вы новичок, вы сможете соответствующим образом изменить HTML, чтобы решить эту проблему.

0 голосов
/ 21 апреля 2011

В качестве временного решения вы можете попросить своих клиентов просматривать веб-сайт в режиме совместимости (вы можете даже принудительно включить режим, отправив метатеги / заголовки с сервера).Хотя это может решить не все ваши проблемы, оно должно охватывать большинство из них.

От постоянного решения вы должны начать перевод своих страниц одну за другой в стандартный режим (т. Е. Поддерживать текущие основные браузеры, такие как IE8 / 9, FF, Chrome, Safari)

...