2013-11-26 6 views
0

Я кодирую сайт, поддерживающий IE9, Firefox 23, Chrome 29 и Safari 5.1.Какой самый простой способ перенаправить неподдерживаемые браузеры?

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

Каков самый простой способ сделать это с наименьшим количеством кода?

+1

Вместо проверки конкретной версии браузера вы должны действительно проверить возможности и перенаправить, если эти возможности не выполняются. – Steve

+0

Прочтите эту статью: http://www.pontikis.net/tip/?id=27 – Sebsemillia

+1

и этот http://css-tricks.com/browser-detection-is-bad/ – Sico

ответ

3

обнаружения Особенностью является путь, а не браузер нюхают, но предоставить вам ответ, кажется, чтобы вы ищете, я приготовил это:

var browser = (function(){ 
    var ua = navigator.userAgent, 
     M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [], 
     tem; 

    if(/trident/i.test(M[1])){ 
     tem = /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || []; 
     return ['ie', (tem[1] || '')]; 
    } 
    M = M[2] ? [M[1].toLowerCase(), M[2]]:[navigator.appName.toLowerCase(), navigator.appVersion, '-?']; 
    if((tem = ua.match(/version\/([\.\d]+)/i))!= null) M[2] = tem[1]; 
    return M; 
})(); 

var supported = { 
    'ie' : 9, 
    'chrome' : 29, 
    'safari' : 5.1 
} 

if (supported[browser[0]] <= (browser[0]=='safari' ? parseFloat(browser[1]) : parseInt(browser[1],10))) { 
    alert('Your browser is OK !'); 
}else{ 
    window.location.href = 'http://browsehappy.com/'; 
} 

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

И снова обнаружение функции - это, как правило, путь, а браузерное обнюхивание - нет.

+0

спасибо, почему обнаружение функции лучше, чем обнюхивание браузером? Разве это не означает, что мне нужно проверить каждую функцию, которую я использую в своем коде? – alias51

+1

Поскольку для обнаружения браузера вам необходимо обновить сценарий обнаружения. Если сигнатура браузера изменится, вы не сможете ее правильно определить. IE11, например, просто изменил свою подпись, и старые скрипты обнаружения браузера будут разбиты в результате этого. Кроме того, как вы будете обрабатывать все действительно странные браузеры (Lynx, Maxthon, NetSurf, Retawq, Rockmelt и т. Д.)? Благодаря обнаружению функции вы знаете, на что должен быть способен ваш браузер, и если он не будет перенаправлен. – Steve

+0

@Steve Спасибо, так лучше проверить каждую функцию в моем коде? – alias51

0

Попробуйте Modernizer:

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

С тир сайта:

Modernizr делает его легким для вас, чтобы написать условный JavaScript и CSS обрабатывать каждую ситуацию, поддерживает ли браузер функцию или нет. Он идеально подходит для быстрого прогрессирования.

+0

Спасибо, я ищу перенаправление браузера, хотя это грациозная деградация, которую я не хочу. – alias51

Смежные вопросы