Страница продолжает переходить в режим Quirks в IE8 даже с установленным DOCTYPE

Я пытаюсь загрузить свой сайт в IE8, но он продолжает возвращаться в режим Quirks Mode и отображает всю страницу забавно. Я могу переключить его в режим документа IE8 с помощью инструментов разработчика, и это нормально, но я не могу ответить, почему он сам продолжает возвращаться в режим Quirks.

Я установил <!DOCTYPE html>, поэтому он не должен этого делать. В верхней части страницы содержится следующее, созданное CMS:

(ignore this line, it's here to show the blank lines in the source code)




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--[if IE 7]>                  <html class="ie7 no-js" lang="en">     <![endif]-->
<!--[if lte IE 8]>              <html class="ie8 no-js" lang="en">     <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="not-ie no-js" lang="en">  <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

Любые идеи? Спасибо!


person DT.DTDG    schedule 06.12.2013    source источник


Ответы (2)


Согласно w3c validator у вас есть пробел перед вашим типом документа. Этого было бы достаточно, чтобы IE перешел в режим причуд.

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

См. это возможное решение

person John Conde    schedule 06.12.2013
comment
Спасибо, сейчас я попробую. Думал, что это может быть пробел, так как по какой-то причине из CMS сгенерирована 41 строка! Я вернусь, чтобы принять ваш ответ, потому что я уверен, что это проблема :) - person DT.DTDG; 06.12.2013

Я считаю, что IE по умолчанию использует Quirks, если вы не заставляете его использовать стандарты. Я использую это, чтобы заставить стандарты в IE ...

<!DOCTYPE html> 

Тип документа должен быть точно таким, как указано выше, чтобы стандарты работали (пока все хорошо).

<html>
<head>

Следующие строки должны быть первыми в теге заголовка, в противном случае они игнорируются.

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

Первая строка устанавливает стандарты для версий IE, которые понимают "край" - независимо от того, какая версия, любая версия выше 9 должна понимать эту строку, чтобы указывать ей на отображение стандартов.

Поскольку IE9 не понимает «край», вторая строка заставляет IE9 отображать стандарты.

Поскольку IE8 не понимает content = "IE = 9", он пропускает это и переходит к следующей строке, которую он понимает и которая заставляет ее отображать в стандартах.

Я протестировал все это с пробелами и жесткими возвратами над доктайпом, и они отлично работали даже с пробелами и возвратами.

Я думаю, вы можете разместить еще один оператор под оператором IE8 для IE7, но я не хочу клясться в этом.

person Deborah    schedule 06.12.2013