IE8 принимает имя класса IE7 при использовании условных комментариев - PullRequest
3 голосов
/ 11 мая 2011

Я видел пару ответов, которые относятся к моим вопросам, но, похоже, не удалось решить проблему.

Я пытаюсь использовать условные комментарии для таргетинга на IE согласно Paul Irish Boilerplate, т.е.

<!--[if lt IE 7 ]> <body class="ie6"> <![endif]--> 
<!--[if IE 7 ]>    <body class="ie7"> <![endif]--> 
<!--[if IE 8 ]>    <body class="ie8"> <![endif]--> 
<!--[if IE 9 ]>    <body class="ie9"> <![endif]--> 
<!--[if gt IE 9]>  <body> <![endif]-->
<!--[if !IE]><!--> <body> <!--<![endif]-->

Doctype является «переходным».

Я тестирую сайт на локальном сервере и смотрю на панель инструментов разработчика в IE8, класс, который размещен на теле, - «ie7»

После изучения этого я использую следующее, чтобы попытаться выполнить рендеринг в режиме стандартов IE8, надеясь, что класс, надетый на тело, будет иметь значение «ie8»

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">

Это не такт работа.Я также использовал JS здесь , чтобы сказать, в каком режиме IE8 находится. Он говорит о режиме стандартов IE8.

Любая идея, как заставить класс в теле IE8 читать 'ie8«?Или, по крайней мере, не «ie7», как сейчас.

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 мая 2011

Если вы используете локальный сервер, вы, вероятно, находитесь в режиме совместимости с IE8. Это значение по умолчанию для локальных сайтов.

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

Вы можете отключить поведение по умолчанию, нажав «Инструменты»> «Параметры просмотра в режиме совместимости» и изменив параметр «Отображать сайты интрасети в режиме совместимости».

1 голос
/ 11 мая 2011

Если IE8 находится в режиме IE7, то браузер корректен, чтобы сообщать о себе как IE7;В конце концов, целью режима IE7 является визуализация страницы точно так, как это сделал бы IE7, поэтому, если вы делаете обнаружение в браузере, вам нужно сказать, что это IE7, потому что с поведением IE7 вам придется иметь дело (тот факт, что в IE8 есть ошибки в IE7 и что он не совсем такой же, как в реальном IE7, - это еще одна тема).

То, что вы, похоже, хотите, - это чтобы IE8 действительно находился в режиме IE8,Это разумная вещь, которую нужно хотеть!

Вы сказали, что используете:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">

Вы пробовали это вместо этого:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

'edge' говорит IEиспользовать самый современный механизм рендеринга, который должен заставить IE8 перейти в обычный режим IE8.Может быть, это будет работать лучше, чем указывать IE8 эмулировать себя?

Кстати, если у вас возникли проблемы на компьютерах в вашей локальной сети, когда IE8 возвращается в режим IE7, когда вы этого не ожидаете, будьтеПомните, что в IE8 есть параметр конфигурации, который указывает «всегда использовать режим IE7 для сайтов интрасети».Microsoft предоставила эту функцию, чтобы помочь с обратной совместимостью пользовательских сайтов интрасети, которые не очень хорошо обновились до IE8, но, честно говоря, это вызывает больше хлопот, чем экономит.Если это проблема, и вы не можете решить ее по-другому, вы можете найти самый простой ответ - просто зайти на все машины в вашей сети и изменить настройки конфигурации (конечно, в зависимости от размера вашей сети!).

1 голос
/ 11 мая 2011

Согласно этой странице : «Обратите внимание, что IE8 претендует на 7 в представлении совместимости»

Если отличные люди в JQuery не могут с этим разобраться, то я думаю,ответ, вероятно, нет.: /

...