лучший способ обнаружить браузер в JS - PullRequest
5 голосов
/ 09 октября 2011

Существует множество способов обнаружения браузером в JavaScript.

Насколько я знаю, используя navigator.userAgent или обнаруживая функции (например, XMLHttpRequest) и т. Д.

Можеткто-нибудь сказать мне, какой путь является лучшим и наиболее эффективным?

Ответы [ 4 ]

16 голосов
/ 09 октября 2011

Если вам действительно нужно знать, какой браузер они используют, вам, в основном, нужно взглянуть на строку userAgent (хотя вы можете иногда выводить браузер, ища пара неясных черт). Просто помните, что некоторые браузеры позволяют пользователю изменять это и лгать вам. : -)

Но обнаружение браузера вышло из моды по веским причинам. Вместо этого, как вы говорите, вы хотите обнаружить функции, которые вы ищете. Это более надежно и требует меньше работы. Например, тот факт, что IE не поддерживает addEventListener, не означает, что он никогда не будет (а на самом деле IE9 поддерживает). Таким образом, вместо этого вы обнаруживаете функцию, которая проверяет код на будущее.

Вот конкретный пример. Предположим, вы хотите узнать (как я сделал для моего плагина place5 jQuery ), поддерживает ли браузер атрибут placeholder . Вы могли бы использовать обнаружение браузера и вести список браузеров, в каких версиях есть или не поддерживается, что является грязным и что-то, к чему вы должны постоянно возвращаться, и т. Д. может сделать это:

if ("placeholder" in document.createElement("input")) {
    // The browser supports the attribute
}
else {
    // It doesn't
}

... и все готово.

На этой странице имеется большой набор тестов функций, поддерживаемых kangax . Также есть библиотека под названием Modernizr , которая выполняет обнаружение функций, медиазапросы и многое другое для вас. Если вы используете jQuery, он имеет функцию обнаружения некоторых функций, встроенную через jQuery.support. В этой статье .

есть хорошее обсуждение различных аспектов обнаружения функций, медиазапросов, определения форм-фактора (планшет, телефон или ПК?)
6 голосов
/ 09 октября 2011

Вы не обнаруживаете браузеры. Вместо этого вы проверяете наличие доступных функций.

Обнаружение браузеров можно обойти (черт возьми. Я должен был сделать это сам, когда использовал Opera в Gmail несколько лет назад), но если браузер имеет функцию, то вы знаете, что можете использовать ее.

0 голосов
/ 09 октября 2011

Функция обнаружения - это быстрый способ обнаружения браузера. Как уже упоминалось, более важно знать, поддерживается ли функция вашим браузером или нет, а не обнаруживать браузер. Следующая ссылка поможет вам различать браузеры в зависимости от поддерживаемых ими объектов: http://www.javascriptkit.com/javatutors/objdetect3.shtml

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

0 голосов
/ 09 октября 2011

Вы можете попробовать это http://www.quirksmode.org/js/detect.html

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

Еще один отличный инструмент для обнаружения функций - Modernizr

...