Как я могу определить, есть ли у пользователя IE ... и отправить его на страницу о том, что мое веб-приложение не поддерживается в IE? - PullRequest
0 голосов
/ 28 марта 2011

Я разрабатывал веб-приложение и заметил, что при тестировании с IE возникают серьезные проблемы с определенными критическими элементами дисплея.По этой причине мне нужно заблокировать веб-приложение от пользователей IE и отправить их на другую страницу для загрузки либо Firefox, либо Chrome.

Я искал способ сделать это, но я не могу 'Не могу найти ни одного легкого руководства, которое предназначено только для IE.Я нашел и попробовал некоторые фрагменты, но они не будут работать, так как они просто используются для определения и печати браузера / ОС / и т. Д.Информация.Буду очень признателен за вашу помощь!

Ответы [ 5 ]

2 голосов
/ 28 марта 2011

Вместо того, чтобы блокировать это прямо, рассмотрите информационное сообщение.Кстати, в этом случае IE несколько полезен:

<!--[if IE]><div class="info-bar">Your browser is not supported. Some
parts of this application might be non-functional.</div><![endif]-->
1 голос
/ 28 марта 2011

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

Во-первых, некоторые браузеры (например, Opera) могут / будут отправлятьв другом пользовательском агенте, потому что он делает браузер более «совместимым» (другими словами, он работает на основе самой методики, которую вы планируете использовать).

Во-вторых, не потому, что это Internet Explorer, он обязательно не будет работать,Ваша попытка также исключает использование Internet Explorer 9, который имеет очень хорошие шансы на совместимость с вашим веб-приложением.

Вместо этого на стороне клиента следует убедиться, что ожидаемые функции действительно присутствуют.Вы полагаетесь на document.getElementsByClassName?Попробуйте это:

if (document.getElementByClassName == undefined)
    document.location.replace('Unsupported browser URL here');

Вы полагаетесь на <canvas>?Попробуйте это:

if (document.getElementById('canvas-element').getContext == undefined)
    document.location.replace('Unsupported browser URL here');

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

.error-message:not(.unexistant-class) {
    /* this rule will be dropped by browsers that don't support the not()
        selector */
    display:none;
}

Короче говоря, проверьте функции вместо агента пользователя.Если у клиента есть все необходимые функции, нет причин оставлять его позади.

1 голос
/ 28 марта 2011

Один из способов - проверить пользовательский агент, и вы можете получить к нему доступ через $_SERVER['HTTP_USER_AGENT']

if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT']))
    {
        // Internet Explorer!
        // header("Location: noie.php");
        // exit();
    }

Однако это не всегда надежно, поэтому другой способ - проверить, доступны ли ваши функции через javascript, например:

if(window.localStorage){
  // you can use local storage
} else {
  // you can't
}

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

0 голосов
/ 28 марта 2011

Ну, вы также можете использовать этот код http://www.ie6nomore.com/

0 голосов
/ 28 марта 2011

Вы должны проверить заголовок пользовательского агента:

http://php.net/manual/en/function.get-browser.php

...