Основная причина использовать обнаружение функций в отличие от прослушивания пользовательского агента - это проверка будущего.
Скажем, например, что вы хотите использовать некоторые новые функции XMLHttpRequest 2.0 (просто придумав это).Вы знаете, что IE не поддерживает это, но Firefox поддерживает, и поэтому у вас есть такой код в вашем JS:
if (!IE) {
UseNewAjax();
} else {
UseOldAjax();
}
Позже выходит новая версия IE, которая поддерживает новые функции, но потому что вывы нюхаете агентов, ваши читатели IE не смогут получить эту функциональность без вашего изменения кода.
С другой стороны, если вы обнаружите функцию:
if (document.hasCoolNewAjax) {
UseNewAjax();
} else {
UseOldAjax();
}
Выв будущем можно быть уверенным в том, что если браузер поддерживает функцию, которой он раньше не пользовался, он может немедленно начать использовать эти функции, и вам не нужно менять код для его поддержки.
Обнаружение браузера / агента пользователя : использование языка программирования для определения, какой браузер использует посетитель, поэтому для этого браузера можно написать специальную логику.Неэффективно и считается плохой практикой в сообществе разработчиков.
Обнаружение функций : Использование языка программирования для определения того, поддерживает ли браузер определенную функцию.Считается лучшей практикой в сообществе разработчиков, поскольку она надежна и рассчитана на будущее.
Из Википедии:
Нюхание пользовательских агентов в большинстве случаев считается плохой практикой, поскольку поощряет браузер-специфический дизайн и штрафует новые браузеры с неизвестными идентификаторами пользовательских агентов.Вместо этого W3C рекомендует создать стандартную разметку HTML, которая позволяет корректно отображать информацию в максимально возможном количестве браузеров, и проверять определенные функции браузера, а не конкретные версии браузера или марки.
JavaScript - не единственный язык, на котором вы можете прослушивать пользовательский агент или определять функции.Например, .NET Framework имеет свойства, которые позволяют читать всевозможную информацию о браузере:
http://msdn.microsoft.com/en-us/library/3yekbd5b.aspx
http://modernizr.com