Срыв: не Может принудить IE 8 к “Представлению Compatibility”!

Теоретически необходимо покрыть все возможные входные комбинации и тест, что вывод корректен, но иногда это просто не стоит того.

6
задан Greg 3 August 2009 в 21:29
поделиться

4 ответа

В процитировать IEBlog :

«Режим браузера» влияет на пользовательский агент строка, вектор версии, используемый, когда оценка условных комментариев и вам лучше пойти и убедиться, что проверка строки пользовательского агента и условные комментарии делают так, чтобы 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 ' Примерно так же он испортил проверки браузера.

5
ответ дан 10 December 2019 в 02:51
поделиться

Проблема не в том, что вы используете неправильный тип документа?

Возможно:

<!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.

0
ответ дан 10 December 2019 в 02:51
поделиться

Вы правильно установили метатег, но IE8, похоже, использует предыдущий режим рендеринга, пока вы не перезапустите браузер.

Чтобы узнать, что увидят ваши пользователи:

  1. Щелкните в Режиме документа на панели инструментов разработчика и посмотрите, какое значение помечено (по умолчанию для страницы) .
  2. Перезапустите IE8 и просмотрите документ - IE теперь должен использовать страницу по умолчанию.
2
ответ дан 10 December 2019 в 02:51
поделиться

Атрибут xmlns = "http://www.w3.org/1999/xhtml" отменяет метатег. Переместите метатег над тегом html. Да, верно, над тегом html. Затем он выполнит emulateIE7 перед запуском javascript. Я тестировал это в IE7, IE8 и Firefox.

1
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: