Détecter téléphone/tablette/client web à l'aide de javascript

Je suis en train d'essayer de détecter si l'utilisateur est sur un téléphone, d'une tablette ou d'un pc

J'ai cherché sur Google pour un certain temps, apparemment il n'y a pas de solution facile.

Bien, je suppose que je ne devrais pas utiliser la Résolution, puisque de nos jours, certains comprimés ont un incroyable résolutions.

Je ne devrais pas compter sur l'orientation, parce que windows8 ordinateurs portables peut juste tourner comme les tablettes.
(et responsive design est tout simplement trop difficile pour mon projet en cours)

J'ai essayé d'utiliser UserAgent(la pensée, il a ses inconvénients aussi), mais ne peut pas obtenir ce travail, ci-dessous est une conjonction de différentes versions en ligne que j'utilise pour distinguer téléphone/tablette depuis un Pc, ils ne fonctionnent pas et je n'ai aucune idée de pourquoi

var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','iemobile','phone','mobile'];
                for(i in agents) {
                    if(navigator.userAgent.toLowerCase().match('/'+agents[i]+'/i')) {
                        return true;
                    }
                }


if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
                return true;
            }

 if( navigator.userAgent.match(/Android/i)
                 || navigator.userAgent.match(/webOS/i)
                 || navigator.userAgent.match(/iPhone/i)
                 || navigator.userAgent.match(/iPad/i)
                 || navigator.userAgent.match(/iPod/i)
                 || navigator.userAgent.match(/BlackBerry/i)
                 || navigator.userAgent.match(/Windows Phone/i)
                 || navigator.userAgent.match(/bada/i)
                 || navigator.userAgent.match(/Bada/i)
                 ){
                return true;
            }
Ils sont sur le même et devrait fonctionner. Que voulez-vous dire qu'ils ne travaillent pas ? Quel est le userAgent ?
Comment font-ils 'ne fonctionnent pas'?
Pourquoi avez-vous besoin de décider pour tablette/téléphone/pc? C'est pas comme si vous devez ajouter un contrôle si vous suspect que la personne n'a pas un clavier physique (qu'est-ce que Asus transformer, après tout?)
Asus PadFone complique encore plus les choses. Il peut passer du téléphone à la tablette lors de l'exécution, IIUC
eh bien..tout ce qui précède suffit de ne pas retourner la valeur true. Honnêtement, je n'ai aucune idée de pourquoi cela arriverait

OriginalL'auteur Matthew Yang | 2013-02-26