К Цитировать IEBlog :
«Режим браузера» влияет на пользовательский агент
строка, вектор версии, используемый при
оценивать условные комментарии и
режим рендеринга.
Подробнее о http://msdn.microsoft.com/en-us/library/dd565624(VS.85).aspx.
Как вы можете ясно видеть, вы все равно не сможете повлиять на все эти вещи: к тому времени, когда вы говорите браузеру действовать как IE7, он уже действует как IE8.
Возможно, настоящий вопрос заключается в следующем: Почему для вас так важно, что такое режим браузера? Режим документа - это то, что вас больше всего беспокоит - все, что меняется в режиме браузера, по мере того, как рендеринг связан с тем, что исключено / включено, но проверяется версия, и пользователи все равно не будут искать в инструментах разработчика , поэтому им все равно.
Вместо того, чтобы тратить много времени на то, чтобы он выглядел как режим чистой совместимости в инструментах разработчика, вам лучше пойти и убедиться, что проверка строк пользовательского агента и условные комментарии делают так, чтобы IE7 и IE8 получали одинаковый материал для работать, а затем оставить EmulateIE7 в.
EDIT:
Проблема в проверках вашей версии, и, как я и обещал ниже, я расскажу вам, где проблема.
Если вы используете инструменты разработчика для отладки сценария размещения меню, вы можете покопаться и увидеть, что путь выполнения для get_x_position отличается, когда браузер сообщает о себе как IE7 или IE8: is_ie5up
имеет значение true для режима IE7, и false для режима IE8. В результате возвращаются очень разные значения.
На этом этапе мы должны вернуться туда, где установлена эта переменная:
var is_ie5up = (is_ie6up || (is_ie && !is_ie3 && !is_ie4));
Как видите, это зависит от значения is_ie6up
, поэтому давайте посмотрим на окружающий код ...
var is_ie8up = (is_ie8 || is_ie9up);
var is_ie7up = (is_ie7 || is_ie8up);
var is_ie7up = (is_ie7);
var is_ie6up = (is_ie6 || is_ie7);
var is_ie5up = (is_ie6up || (is_ie && !is_ie3 && !is_ie4));
var is_ie5_5up = (is_ie6up || (is_ie && !is_ie3 && !is_ie4 && !is_ie5));
... вы заметили ошибку (подсказка: сравните строки 2 и 4 этого фрагмента)?
Это верно: is_ie6up
не установлен в true, если браузер не является точно IE6 или IE7. Правильная строка должна, конечно, читать
var is_ie6up = (is_ie6 || is_ie7up);
... но подождите. Это тоже не хорошо, потому что строка 3 фрагмента изменяет is_ie7up
на true, только если браузер точно IE7! Итак, вам нужно удалить перезапись is_ie7up
и исправить настройку is_ie6up
.
Я предполагаю, что у вас точно такая же проблема на другом сайте: вы перепутали проверки браузера почти таким же образом.