Как я могу показать сообщение браузерам IE6 / IE7 для обновления до IE8 и чтобы IE8 не показывал предупреждение IE7? - PullRequest
24 голосов
/ 05 мая 2009

Я хочу разрешить только пользователям с IE8 (не IE6, IE7) или другим браузером доступ к моему сайту при входе в систему.

Я следовал: http://code.google.com/p/ie6-upgrade-warning/ Но я также хотел, чтобы пользователи IE7 не могли использовать основной сайт при входе в систему (они могут просматривать публичные страницы). Причина в том, что основное веб-приложение имеет множество JavaScript-эффектов, которые будут работать на 100% только в режиме рендеринга IE8. (или любой другой браузер, кроме IE.)

Проблема с изменением предупреждения об обновлении ie6 на ie7 состоит в том, что IE8 выглядело так, как будто моя веб-страница отображалась в режиме рендеринга IE7, и «ложь» о том, что ie7, и запускает код таблицы стилей IE7.

Так как же заставить IE8 всегда отображать мою страницу в режиме IE8?

Ответы [ 13 ]

24 голосов
/ 05 мая 2009

Используйте этот тег:

<meta http-equiv="X-UA-Compatible" content="IE=8" />
14 голосов
/ 05 мая 2009

Исправление к примеру AdamSane:

<!--[if lt IE 8]> Special instructions for IE 7 or less here <![endif]-->

11 голосов
/ 27 июля 2011

вот хорошая ссылка, которая предлагает какое-то решение

http://garmahis.com/tools/ie6-update-warning/

лично мне нравится четвертое решение (http://www.browser -update.org / )

просто кусок пирога

4 голосов
/ 23 января 2014

Вот этот классный скрипт, который работает для всех старых браузеров:

<script type="text/javascript"> 
    var $buoop = {vs:{i:7,f:5,o:12,s:5,n:9}}; 
    $buoop.ol = window.onload; 
    window.onload=function(){ 
     try {if ($buoop.ol) $buoop.ol();}catch (e) {} 
     var e = document.createElement("script"); 
     e.setAttribute("type", "text/javascript"); 
     e.setAttribute("src", "//browser-update.org/update.js"); 
     document.body.appendChild(e); 
    } 
</script> 

Примечание. Если посетитель игнорирует совет, он некоторое время не будет появляться.

Больше можно найти: здесь

4 голосов
/ 15 февраля 2012

Вместо того, чтобы пытаться включить режим IE 8+, я использую комбинацию условных комментариев и простой проверки JavaScript. Свойство document.documentMode было добавлено в IE в версии 8, поэтому, если оно вообще существует (независимо от значения, хотя оно ДОЛЖНО быть 7 с этим кодом), это означает, что мы находимся в режиме совместимости и не должно отображать предупреждение:

<!--[if lte IE 7]>
    <script>
        if (!document.documentMode) { //if documentMode exists, this is a later IE in compatibility mode
            showBadBrowserMessage();
        }
    </script>
<![endif]-->
4 голосов
/ 05 сентября 2011

Лично я бы порекомендовал пользователям обновить IE по соображениям безопасности. Я бы использовал условный комментарий для целевых браузеров ниже IE8.

      <!--[if lt IE 8]>You are using an outdated version of Internet Explorer.  For security reasons you should upgrade your browser. Please go to Windows Updates and install the latest version.<![endif]-->

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

1 голос
/ 05 мая 2009

Как уже упоминалось, я бы предложил лучший способ добиться этого - использовать условные комментарии для включения таблицы стилей, относящейся ко всем версиям IE ранее, чем 8:

<!--[if lt IE 8]> Include CSS here <![endif]-->

Включенный CSS может сделать предупреждение видимым или, возможно, включить наложение на странице, которое «блокирует» пользователей. Было бы неплохо включить некоторые правила, которые скрывают важные элементы на странице, которые в противном случае могли бы сбить пользователя с толку, если они не работают должным образом.

Другой вариант - перенаправить пользователя на другую страницу - я не большой поклонник перенаправлений, но при осторожном использовании они могут стать подходящим решением.

Рассматривали ли вы , почему вы блокируете большое количество пользователей с вашего сайта? Возможно, вам следует потратить время на то, чтобы решить, как изящно ухудшить ваш JavaScript или наоборот; «постепенно улучшайте» с помощью JavaScript.

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

1 голос
/ 05 мая 2009

Вероятно, лучшим способом было бы обнаружить строку User-Agent браузера пользователя и перенаправить их на страницу с просьбой обновить (или загрузить другой браузер, такой как firefox или chrome), если они используют старую версию IE. Вы можете увидеть примеры пользовательских агентов IE 7 и 8 в этой статье для разработчиков IE * . Старые версии IE следуют аналогичному шаблону.

Одна вещь, которую вы не должны делать, это предположить, что любая строка пользовательского агента, не соответствующая определенному шаблону, недопустима. Просто проверьте MSIE ([0-9]) и посмотрите, находится ли он в диапазоне; если он полностью отсутствует, предположим, что браузер поддерживается. Если это MSIE 7, то дополнительно проверьте маркер Trident, указывающий режим совместимости (и, я полагаю, попросите пользователя отключить его). Это позволит другим, будущим начинающим браузерам иметь шанс на рендеринг вашей страницы, не отворачивая их от двери:)

1 голос
/ 05 мая 2009

Зависит от того, как вы закодировали свой (X) HTML, но IE8 должен использовать стандартный режим (не режим IE7), если у вас строгий тип документа:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

вверху ваших файлов HTML.

Спецификации XHTML 1.0 - строго соответствующие документы

Вот хороший пост о том, как различные типы документов и т. Д. Влияют на режим рендеринга IE8: Понимание режимов совместимости в Internet Explorer 8

0 голосов
/ 29 октября 2013

Эта вечеринка закончилась? > <</p>

Да, но я думаю, что здесь можно немного обновить информацию.

По сегодняшним стандартам, «сегодня», то есть 29 октября 2013 года, вы можете использовать этот метатег, чтобы активировать новейшие режимы IE Browser и Document и запустить установку Google Chrome Frame в более старых IE:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Это позволяет вам использовать сервер для определенных стилей IE6 / 7. Имейте в виду, что я говорю «стили», а не «таблицы стилей», что означает: вы бы использовали только один файл CSS, и в нем все ваши стили IE6 и IE7. Это должно минимизировать HTTP-запросы ... но это совершенно другой разговор.

В любом случае, с помощью приведенного выше фрагмента сценариев или условных комментариев не требуется.

Примечание: Google Chrome Frame выйдет из эксплуатации в январе 2014 года - подробнее здесь .

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