Si vous avez vraiment besoin de savoir ce que navigateur qu'ils utilisent, vous avez la plupart du temps à regarder la chaîne userAgent
(bien que vous pouvez parfois déduire le navigateur en recherchant quelques traits obscurs). Sachez simplement que certains navigateurs permettent à l'utilisateur de changer cela et de vous mentir. :-)
Mais la détection du navigateur n'est plus à la mode, pour de bonnes raisons. Au lieu de cela, comme vous le dites, vous voulez détecter les fonctionnalités que vous recherchez. C'est plus fiable, et moins de travail. Juste parce que IE n'a pas supporté addEventListener
, par exemple, ne veut pas dire qu'il ne le fera jamais (et en fait IE9 fait). Donc, vous fonction-detect à la place, qui à l'épreuve du futur le code.
Voici un exemple concret: Supposons que vous voulez savoir (comme je l'ai fait pour mon place5 jQuery plug-in) si un navigateur prend en charge le placeholder
attribute. Vous pouvez utiliser la détection de navigateur et maintenir une liste des navigateurs dans quelles versions ont ou n'ont pas de support, ce qui est désordonné et quelque chose que vous devez continuer à revenir, etc., etc., ou vous pourriez le faire:
if ("placeholder" in document.createElement("input")) {
// The browser supports the attribute
}
else {
// It doesn't
}
... et vous avez terminé.
Il existe un grand ensemble de tests de fonctionnalités dans this page maintenu par kangax. Il y a aussi une bibliothèque appelée Modernizr qui fait la détection de fonctionnalités, les requêtes média, et plus encore pour vous. Si vous utilisez jQuery, une fonction de détection de caractéristiques est intégrée via jQuery.support
. Il y a une discussion intéressante sur divers aspects de la détection de caractéristiques, des requêtes média, de la détection de facteur de forme (tablette, téléphone ou PC?) Dans this article.
Pour la détection de fonctionnalités, utilisez http://www.modernizr.com/ – Idered