313 votes

Détecter la version du navigateur

J’ai cherché autour d’un bon scénario qui me permettrait de détecter si l’utilisateur visitant le site Web a firefox 3 ou 4. Tout ce que j’ai trouvé est scripts pour détecter le type de navigateur, mais pas la version. Toutes les idées ?

537voto

kennebec Points 33886

Vous pouvez voir ce que le navigateur ditet utiliser cette information pour exploitation forestière ou l’essai de plusieurs navigateurs.

Navigator.sayswho est une propriété dénombrable-par exemple, « Firefox 31'

215voto

Il s’agit d’une amélioration par rapport à la réponse déjà bon de Kennebec.

Et puis, il suffit de lancer :

De cette façon vous vous protégez de l’oubli du code.

18voto

Oliver Moran Points 1924

16voto

Danail Gabenski Points 320

Je cherchais une solution pour moi-même, puisque jQuery 1.9.1 et au-dessus ont supprimé l' $.les fonctionnalités du navigateur. Je suis venu avec cette petite fonction qui fonctionne pour moi. Il a besoin d'une variable globale (j'ai appelé le mien _browser) afin de vérifier que le navigateur de il est. J'ai écrit un jsfiddle pour illustrer comment il peut être utilisé, bien sûr, il peut être étendu pour les autres navigateurs par simple ajout d'un test pour _browser.toto, où foo est le nom du navigateur. Je n'ai juste les plus populaires.

detectBrowser()

_browser = {};

function detectBrowser() {
  var uagent = navigator.userAgent.toLowerCase(),
      match = '';

  _browser.chrome  = /webkit/.test(uagent)  && /chrome/.test(uagent);
  _browser.firefox = /mozilla/.test(uagent) && /firefox/.test(uagent);
  _browser.msie    = /msie/.test(uagent) || /trident/.test(uagent);
  _browser.safari  = /safari/.test(uagent)  && /applewebkit/.test(uagent) && !/chrome/.test(uagent);
  _browser.opr     = /mozilla/.test(uagent) && /applewebkit/.test(uagent) &&  /chrome/.test(uagent) && /safari/.test(uagent) && /opr/.test(uagent);
  _browser.version = '';

  for (x in _browser) {
    if (_browser[x]) {
      match = uagent.match(new RegExp("(" + x + ")( |/)([0-9]+)"));
      if (match) {
        _browser.version = match[3];
      }
      else {
        match = uagent.match(new RegExp("rv:([0-9]+)"));
        if (match) {
          _browser.version = match[1];
        }
      }
      break;
    }
  }
  _browser.opera = _browser.opr;
  delete _browser.opr;
}

Pour vérifier si le navigateur est Opera, vous le feriez

if (_browser.opera) { // Opera specific code }

Edit 3: correction de la mise en forme, correction de la détection pour IE11 et Opera/Chrome, changé de browserResult de résultat. Maintenant à l'ordre du _browser clés n'a pas d'importance. Mise à jour jsFiddle lien.

9voto

Marek Points 510

jQuery peut gérer cette très agréable (jQuery.navigateur)

var ua = $.browser;
if ( ua.mozilla && ua.version.slice(0,3) == "1.9" ) {
    alert( "Do stuff for firefox 3" );
}

EDIT: Comme Josué a écrit dans son commentaire ci-dessous, jQuery.navigateur propriété n'est plus pris en charge dans jQuery depuis la version 1.9 (lire jQuery 1.9 notes de version pour plus de détails). jQuery développement de l'équipe recommande d' utiliser approche plus complète, comme l'adaptation de l'INTERFACE utilisateur avec Modernizr de la bibliothèque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X