Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Ответ 2

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

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

Ответ 4

Лично я рекомендовал бы пользователям обновлять 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]-->

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

Ответ 5

Вместо того, чтобы пытаться принудительно использовать режим 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]-->

Ответ 6

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

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

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

Подробнее можно найти: здесь

Ответ 7

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

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

в верхней части ваших файлов HTML.

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

Вот хороший пост о том, как разные методы /etc влияют на режим рендеринга IE8: Общие сведения о режимах совместимости в Internet Explorer 8

Ответ 8

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

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

Ответ 9

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

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

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

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

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

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

Ответ 10

Вы можете использовать условные комментарии CSS

<!--[if IE 8]>
Special instructions for IE 6 here
<![endif]-->

Ответ 11

Используя javascript, вы можете спросить, какой браузер отправил запроs >

<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Microsoft Internet Explorer")
  && (version>=8))
  {
  alert("Your browser is good enough!");
  }
  else
  {
  alert("It time to upgrade your browser!");
  }
  }
 </script>

Ответ 12

Прошла ли эта вечеринка? > & Л;

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

К сегодняшним стандартам, "сегодня", являющимся 29 октября 2013 года, вы можете использовать этот метатег для запуска последних режимов браузера IE и документа и запускать установку 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 года - подробнее здесь.

Ответ 13

Сама идея о том, что вы "запрещаете" пользователей IE 6 и 7 с вашего сайта, смешна. Многие люди не могут обновить свой браузер или установить другой из-за ограничений работы или потому, что они не знают, как это сделать. Запрет этих людей на использование вашего сайта просто обойдется вам в конечном итоге.

Либо исправьте свой JavaScript, работайте над проблемами, либо грамотно деградируйте, чтобы сайт работал хорошо, даже если он отключен.

EDIT: я добавил дополнительную информацию в комментарий ниже, который должен быть действительно в этом сообщении:

Часто можно обнаружить IE и обойти его. Черт, вы можете даже использовать условные комментарии для загрузки другой версии JavaScript. Использование JS-структуры позволит абстрагировать различия между браузерами до уровня, о котором вам не нужно беспокоиться. Или просто возьмите IE7.js и придерживайтесь этого на сайте - я слышал, что он работает так, как будто вы не верите.