Теоретически необходимо покрыть все возможные входные комбинации и тест, что вывод корректен, но иногда это просто не стоит того.
«Режим браузера» влияет на пользовательский агент строка, вектор версии, используемый, когда оценка условных комментариев и вам лучше пойти и убедиться, что проверка строки пользовательского агента и условные комментарии делают так, чтобы 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
на истинное, только если браузер точно соответствует IE7! Итак, вам нужно удалить перезаписьis_ie7up
и исправить настройкуis_ie6up
.Я предполагаю, что у вас ТОЧНАЯ такая же проблема на другом сайте: you ' Примерно так же мы испортили проверки браузера.
Это тоже бесполезно, потому что строка 3 фрагмента изменяетis_ie7up
на истинное только в том случае, если браузер точно соответствует IE7! Итак, вам нужно удалить перезаписьis_ie7up
и исправить настройкуis_ie6up
.Я предполагаю, что у вас ТОЧНАЯ такая же проблема на другом сайте: you ' Примерно так же мы испортили проверки браузера.
Это тоже бесполезно, потому что строка 3 фрагмента изменяетis_ie7up
на истинное только в том случае, если браузер точно соответствует IE7! Итак, вам нужно удалить перезаписьis_ie7up
и исправить настройкуis_ie6up
.Я предполагаю, что у вас ТОЧНАЯ такая же проблема на другом сайте: you ' Примерно так же он испортил проверки браузера.
Проблема не в том, что вы используете неправильный тип документа?
Возможно:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Для получения дополнительной информации см. http://htmlhelp.com/tools /validator/doctype.html[115231ght.
Вы правильно установили метатег, но IE8, похоже, использует предыдущий режим рендеринга, пока вы не перезапустите браузер.
Чтобы узнать, что увидят ваши пользователи:
Режиме документа
на панели инструментов разработчика и посмотрите, какое значение помечено (по умолчанию для страницы)
. Атрибут xmlns = "http://www.w3.org/1999/xhtml" отменяет метатег. Переместите метатег над тегом html. Да, верно, над тегом html. Затем он выполнит emulateIE7 перед запуском javascript. Я тестировал это в IE7, IE8 и Firefox.