Принудительное обновление браузера, если IE8 или старше

Интересно, можно ли показать предупреждение или открыть всплывающее окно, в котором будет сказано, что вы обновите IE до последней версии или вместо этого используете Firefox/Chrome/Safari, когда браузер Internet Explorer IE8 или старше...

Я думаю, я должен использовать этот код ниже внутри тегов...

<!--[if lt IE 9]>
...i should use code here...
<![endif]-->

Умно ли обманывать браузер с jQuery и загружать jQuery lib? Или лучше просто использовать обычный javascript, чтобы избежать дополнительных проблем с очень старыми браузерами?


person ProDraz    schedule 06.04.2012    source источник
comment
Этот инструмент как раз подходит для работы; используй это.   -  person Jon    schedule 06.04.2012
comment
это слишком строго, таким образом вы игнорируете примерно 40% посетителей мира   -  person Rodolfo    schedule 06.04.2012
comment
@Rodolfo Если он блокирует доступ к ним, то да. Но если он просто отображает баннерное сообщение или модальное окно, в котором говорится: «Ваш браузер устарел, пожалуйста, обновите его», тогда это только поможет. Я сомневаюсь, что большинство пользователей IE в любом случае полностью понимают, что такое браузер.   -  person Rory McCrossan    schedule 06.04.2012
comment
@RoryMcCrossan ах да, если это просто предупреждение, все в порядке, если сайт полностью работает как минимум на IE8 (а еще лучше, если и на IE7 тоже, примерно 10% используют IE7)   -  person Rodolfo    schedule 06.04.2012
comment
@Rodolfo Этот показатель делает меня грустной пандой.   -  person Rory McCrossan    schedule 06.04.2012
comment
Вы также можете запросить Chrome Frame: chromium.org/developers/how-tos/   -  person mddw    schedule 06.04.2012
comment
@Rodolfo Это косвенно. Если совместимость можно сделать, то это нужно сделать. Если он разрабатывает приложение, которое включает в себя, например, большой объем работы с холстом html5, то, вероятно, будет лучше, если он побудит пользователей перейти на IE8. Как бы хорошо люди ни пытались сделать заготовку холста в IE8, иногда ее поддержка просто не является жизнеспособным вариантом.   -  person David Zorychta    schedule 06.04.2012
comment
@ user309641 Да, вы можете использовать этот подход, но тогда ваш конкурент, который этого не сделает, получит 40% потенциальных клиентов, которых вы выгоняете. Зависит от целевой аудитории конечно   -  person Rodolfo    schedule 06.04.2012
comment
Интересно, почему Microsoft так ненавидит веб-разработчиков. То, что он сделал браузер под названием IE, также известный как ад для веб-разработчиков   -  person kritya    schedule 06.04.2012
comment
@kritya Большая часть проблемы заключается в схеме обновления, которой придерживается Internet Explorer. Chrome и Firefox постоянно подталкивают пользователя к обновлению, в то время как Internet Explorer даже не был автоматически включен в Центр обновления Windows до недавнего времени, и даже тогда многие люди не беспокоятся об обновлении Windows.   -  person David Zorychta    schedule 07.04.2012
comment
Итак, для пользователей смартфонов: вот сценарий, с которым вы, вероятно, знакомы... Мы все были там, где приложение говорит, что вы должны обновить!, затем вы нажимаете «Не сейчас», и приложение закрывается. Я бы хотел увидеть день, когда браузеры сделают это, поскольку Интернет никогда не перестанет двигаться вперед.   -  person gcoulby    schedule 12.02.2014
comment
Проверьте это: nmsdvid.com/iealert — красиво оформленное и четкое оповещение с множеством настраиваемых параметров. .   -  person Meetai.com    schedule 14.06.2015
comment
Часто мне хотелось, чтобы все пользователи использовали только один браузер, а если нет, то чтобы все браузеры обновлялись автоматически без какого-либо взаимодействия с пользователем... конечно, только для непрофессиональных пользователей :)   -  person Avatar    schedule 10.07.2015


Ответы (7)


У вас есть два варианта:

  1. Разобрать User-Agent String

    // Returns the version of Internet Explorer or a -1
    // (indicating the use of another browser).
    function getInternetExplorerVersion() {
        var rv = -1; // Return value assumes failure.
    
        if (navigator.appName == 'Microsoft Internet Explorer') {
            var ua = navigator.userAgent;
            var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    
            if (re.exec(ua) != null) {
                rv = parseFloat( RegExp.$1 );
            }
        }
    
        return rv;
    }
    
    function checkVersion() {
        var msg = "You're not using Internet Explorer.";
        var ver = getInternetExplorerVersion();
    
        if ( ver > -1 ) {
            if ( ver >= 9.0 ) {
                msg = "You're using a recent copy of Internet Explorer."
            }
            else {
                msg = "You should upgrade your copy of Internet Explorer.";
            }
        }
        alert(msg);
    }
    
  2. Использование условных комментариев:

    <!--[if gte IE 9]>
    <p>You're using a recent version of Internet Explorer.</p>
    <![endif]-->
    
    <!--[if lt IE 8]>
    <p>Hm. You should upgrade your copy of Internet Explorer.</p>
    <![endif]-->
    
    <![if !IE]>
    <p>You're not using Internet Explorer.</p>
    <![endif]>
    

Ссылка: Более эффективное обнаружение Windows Internet Explorer

person antonjs    schedule 06.04.2012

Вы можете использовать что-то вроде этого.

ie6-upgrade-warning — это небольшой скрипт (7,9 КБ), который отображает предупреждающее сообщение, вежливо информирующее пользователя о необходимости обновить браузер до более новой версии (предоставляются ссылки на новейшие IE, Firefox, Opera, Safari, Chrome).

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

Скрипт полностью переводится на любой язык, очень прост в настройке (одна строка кода на веб-странице и одна конфигурация параметров).

Хотя он был создан для использования с пользователями IE6, используя правильные параметры, вы можете использовать его для своего сценария.

person Claudio Redi    schedule 06.04.2012

<script> var ISOLDIE = false; </script>
<!--[if lt IE 9]>
     <script> var ISOLDIE = true; </script>
<![endif]-->

Затем позже, где бы вы ни захотели провести линию поддержки старых версий IE в своем коде:

<script>

     if(ISOLDIE) {
          alert("Your browser currently does not support this feature. Please upgrade.");
          window.location = 'http://google.com/chrome';
     }

</script>

Как правило, полностью удалять поддержку IE8 не рекомендуется, поэтому я считаю приведенное выше решение хорошим компромиссом, потому что вы можете добавить его к компонентам вашего веб-сайта/веб-приложения, которые просто не могут поддерживать IE8, но тогда вы может (возможно) по-прежнему поддерживать IE8 в других областях вашего сайта.

person David Zorychta    schedule 06.04.2012
comment
Хорошо, но есть вероятность, что если кто-то использует старую версию IE, это предприятие, которое полагается на специфические функции IE, или новичок в ПК, который на самом деле не знает, что такое веб-браузер, и просто знает, как щелкнуть синюю кнопку e. В таких случаях может быть лучше включить ссылки для обновления IE и других браузеров, а не только один конкретный конкурирующий веб-браузер. - person Paint_Ninja; 25.11.2014

Существует этот голландский веб-сайт, заставляющий пользователей IE6 и более ранних версий обновлять свой браузер, небольшая корректировка кода «Если IE», который вы можете заблокировать от любой версии, которая вам нравится.

http://wijstoppenook.nl/nl/

Прокрутите вниз до шага 4 и нажмите «Загрузить» или «Vorbeeld» для демонстрации, первый — это верхний баннер, второй — полностью блокирует страницу.

Единственный недостаток, это все на голландском языке, поэтому вам придется придумывать свое собственное сообщение.

person Erik Terwan    schedule 06.04.2012

Условные комментарии больше не поддерживаются в IE 10. WTF! Ссылка

person Bludau Media    schedule 11.08.2014
comment
IE10 и IE11 мертвы. Теперь Edge с Chromium обновлен :-) - person Bludau Media; 19.02.2020

На своем сайте добавьте свой код в index.html или index.php

Работает также joomla и wordpress.

<!--[if IE 5]>
<script language="Javascript">
<!--
alert ("It looks like you aren't using Internet Explorer 7. To see our site correctly, please update.")
//-->
</script>
<![endif]-->
<!--[if IE 5.0]>
!--
alert ("It looks like you aren't using Internet Explorer 7. To see our site correctly, please update.")
//-->
</script>
<![endif]-->
<!--[if IE 5.5]>
!--
alert ("It looks like you aren't using Internet Explorer 7. To see our site correctly, please update.")
//-->
</script>
<![endif]-->
<!--[if IE 6]>
!--
alert ("It looks like you aren't using Internet Explorer 7. To see our site correctly, please update.")
//-->
</script>
<![endif]-->

<!--[if IE 7]>
!--
alert ("It looks like you aren't using Internet Explorer 7. To see our site correctly, please update.")
//-->
</script>
<![endif]-->

<!--[if IE 8]>
!--
alert ("It looks like you aren't using Internet Explorer 8. To see our site correctly, please update.")
//-->
</script>
<![endif]-->
person Ankit Suthar    schedule 31.10.2014

Есть много способов, но этот, безусловно, самый элегантный: http://outdatedbrowser.com/en/how< /а>

person drjorgepolanco    schedule 29.08.2017