Comment puis-je détecter si un utilisateur consulte mon site Web à partir d'un navigateur Web mobile afin de pouvoir détecter automatiquement et afficher la version appropriée de mon site Web ?
Réponses
Trop de publicités?Il existe des scripts open source sur Détecter le navigateur mobile qui font cela en Apache, ASP, ColdFusion, JavaScript et PHP.
Oui, la lecture de l'en-tête User-Agent fera l'affaire.
Il y a quelques listes out Il existe des agents utilisateurs mobiles connus, de sorte que vous n'avez pas besoin de partir de zéro. Ce que j'ai fait quand j'en ai eu besoin, c'est de construire une base de données d'agents utilisateur connus et de stocker les inconnus au fur et à mesure qu'ils sont détectés pour révision, puis de déterminer manuellement ce qu'ils sont. Ce dernier point peut s'avérer excessif dans certains cas.
Si vous voulez le faire au niveau d'Apache, vous pouvez créer un script qui génère périodiquement un ensemble de règles de réécriture vérifiant l'agent utilisateur (ou juste une fois et oublier les nouveaux agents utilisateurs, ou une fois par mois, selon ce qui vous convient), comme
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (OneMobileUserAgent|AnotherMobileUserAgent|...)
RewriteRule (.*) mobile/$1
qui déplacerait, par exemple, les demandes de http://domain/index.html à http://domain/mobile/index.html
Si vous n'aimez pas l'approche consistant à avoir un script recréer un fichier htaccess périodiquement, vous pouvez écrire un module qui vérifie l'agent utilisateur (je n'en ai pas trouvé un déjà fait, mais j'ai trouvé ceci particulièrement approprié exemple ) et obtenir les agents utilisateurs de certains sites pour les mettre à jour. Ensuite, vous pouvez compliquer l'approche autant que vous le souhaitez, mais je pense que dans votre cas, l'approche précédente serait parfaite.
Juste une idée, mais si vous travailliez ce problème dans le sens inverse ? Plutôt que de déterminer quels navigateurs sont mobiles, pourquoi ne pas déterminer quels navigateurs ne le sont pas ? Ensuite, codez votre site pour qu'il utilise par défaut la version mobile et redirige vers la version standard. Il y a deux possibilités de base lorsqu'on regarde un navigateur mobile. Soit il supporte le javascript, soit il ne le supporte pas. Si le navigateur ne prend pas en charge le javascript, la version mobile sera utilisée par défaut. Si le navigateur prend en charge JavaScript, vérifiez la taille de l'écran. Tout écran d'une taille inférieure à un certain seuil sera probablement un navigateur mobile. Tout ce qui est plus grand sera redirigé vers votre mise en page standard. Il ne vous reste plus qu'à déterminer si l'utilisateur dont le JavaScript est désactivé est mobile ou non.
Selon le W3C, le nombre d'utilisateurs ayant désactivé JavaScript est d'environ 5 % et la plupart d'entre eux l'ont désactivé, ce qui implique qu'ils savent ce qu'ils font avec un navigateur. Constituent-ils une part importante de votre public ? Si ce n'est pas le cas, ne vous en préoccupez pas. Si oui, quel est le pire scénario possible ? Vous avez ces utilisateurs qui naviguent sur la version mobile de votre site, et c'est une bonne chose.
Voici comment je le fais en JavaScript :
function isMobile() {
var index = navigator.appVersion.indexOf("Mobile");
return (index > -1);
}
Voir un exemple à www.tablemaker.net/test/mobile.html où il triple la taille de la police sur les téléphones portables.
Mon mécanisme préféré de détection des navigateurs mobiles est WURFL . Il est fréquemment mis à jour et fonctionne avec toutes les principales plates-formes de programmation/langage.