66 votes

Détecter si le navigateur s'exécute sur un appareil Android ou iOS

Je dois modifier des boutons et du texte sur un site Web mobile, selon que l'utilisateur le visualise sur un navigateur Android ou iOS. Existe-t-il un moyen fiable d'effectuer le contrôle?

145voto

Anoop Points 12862
var isMobile = {
    Android: function() {
        return /Android/i.test(navigator.userAgent);
    },
    BlackBerry: function() {
        return /BlackBerry/i.test(navigator.userAgent);
    },
    iOS: function() {
        return /iPhone|iPad|iPod/i.test(navigator.userAgent);
    },
    Windows: function() {
        return /IEMobile/i.test(navigator.userAgent);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());
    }
};

13voto

Christofer Eliasson Points 16563

Je voudrais utiliser l' navigator.useragent propriété afin d'obtenir l'useragent-chaîne, de l'analyser, et de détecter l'OS.

Ici est un exemple de comment vous pouvez le faire.

Mise à jour:

En raison de la popularité de cette question, j'ai pensé que je voudrais ajouter quelques informations supplémentaires à ma réponse.

En général, la détection de browser n'est presque jamais la meilleure façon d'aller. Pourquoi? Eh bien, il ya de nombreuses raisons, mais en voici deux bonnes:

  1. Dans presque tous les cas, quand les gens se tournent vers les browser sniffing, la détection de fonctionnalité serait une meilleure option. Il existe de rares cas où il pourrait être approprié d'agir en fonction de ce que l'OS/navigateur de l'utilisateur peut être utilisé, mais, pour la plupart, à l'aide d'une bibliothèque comme Modernizr pour détecter la prise en charge pour une fonctionnalité spécifique est une meilleure façon d'aller. Essayez d'adapter votre site/application à certains navigateurs plutôt que les caractéristiques qu'ils soutiennent est une pente glissante. Au lieu de vérifier si le navigateur prend en charge les fonctionnalités dont vous avez besoin, et polyfill ou de fournir nice réserves quand au manque d'appui.
  2. Browser sniffing est extrêmement compliqué. Pourquoi? Parce que presque tous les navigateurs résident dans leur chaîne de l'agent utilisateur ou de l'absence d'informations suffisantes pour permettre une identification certaine.

Avec cela étant dit, si vous avez vraiment vraiment besoin d'utiliser le navigateur/détection de système d'exploitation, puis de ne pas réinventer la roue, et de ne pas essayer de le faire sur votre propre, vous serez dans un monde de douleur et obscure mises en garde! Je vous suggère d'utiliser une bibliothèque comme WhichBrowser, qui vous fournira avec une pratique de l'objet JavaScript contenant des informations sur le système d'exploitation, navigateur, moteur de rendu et d'appareil.

1voto

norway28 Points 166

Vous pouvez utiliser l'objet navigateur: http://www.w3schools.com/js/js_browser.asp , puis utiliser des instructions if basées sur les propriétés du navigateur.

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