IE7 имеет два режима: режим совместимости и режим стандартов.Еще одна из длинной серии блестящих шагов со стороны MS с IE.(Да, я с сарказмом):
http://blogs.msdn.com/b/chkoenig/archive/2008/08/28/ie8-standards-mode-and-ie7-compatibility-mode.aspx
Что обычно сбивает с толку людей, так это то, что по умолчанию IE8 возвращается в режим совместимости (то есть сломался), если страницазагружается локально или с сервера в вашей сети.Я предполагаю, что логика заключалась в том, что это должна быть страница в вашей интрасети, и поскольку 90% всего веб-программного обеспечения для интрасети ужасно закодированы чудовищами IE6, которые в значительной степени ломаются в любом стандартном браузере, лучше предположить, что код не работает, и вернуться в режим совместимости..
Что касается обнаружения IE8, вы можете сделать это без JavaScript через условные комментарии IE.Обычно я оборачиваю открывающий тег body в условные выражения и присваиваю каждому уникальный идентификатор:
<!--[if !IE]> -->
<body>
<!--<![endif]-->
<!--[if gt IE 8]>
<body id="IE9">
<![endif]-->
<!--[if IE 8]>
<body id="IE8">
<![endif]-->
<!--[if IE 7]>
<body id="IE7">
<![endif]-->
<!--[if lt IE 7]>
<body id="IE6">
<![endif]-->
Затем в вашем CSS вы можете легко обслуживать отдельный CSS при необходимости:
.myStyle {for good browsers}
#ie7 .myStyle {fix for IE7}