Je crée une application Web et je souhaite désactiver les effets de transition sur les appareils Android sous la version 3.0.
Est-il possible de récupérer le numéro de version Android par Javascript dans le navigateur? Si oui, comment?
function getAndroidVersion(ua) {
ua = (ua || navigator.userAgent).toLowerCase();
var match = ua.match(/Android\s([0-9\.]*)/);
return match ? match[1] : undefined;
};
getAndroidVersion(); //"4.2.1"
parseInt(getAndroidVersion(), 10); //4
parseFloat(getAndroidVersion()); //4.2
Utilisez le code ci-dessous pour obtenir une version à 2 chiffres d'Android
var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8));
if (androidversion < 2.3)
{
// do whatever
}
}
Par exemple
Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, comme Gecko) Version/4.0 Mobile Safari/533.1
renverra Android Version = 2.2
Vous pouvez consulter la chaîne de l'agent utilisateur - window.navigator.userAgent
Décrite ici: https://developer.mozilla.org/en/DOM/window.navigator.userAgent
Si ce que vous essayez vraiment de détecter est de savoir si vous disposez d'une version du navigateur qui prend en charge une fonctionnalité particulière, il est presque toujours préférable d'utiliser la détection des fonctionnalités plutôt que la détection de la version du navigateur. modernizr est une énorme base de code pour la détection de fonctionnalités que vous pouvez utiliser tel quel ou emprunter une pièce particulière ou simplement apprendre comment fonctionne la technique générale.
Lorsque je Google, je vois des chaînes d'agent utilisateur comme ceci pour Android:
Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Une expression régulière de /Android\s+([\d\.]+)/
sur window.navigator.userAgent
Récupérera le numéro de version Android.
Je ne peux pas commenter car je n'ai pas assez de représentants ... Je voulais juste ajouter que je devais changer le code de neiker en
var match = ua.match(/Android\s([0-9\.]*)/i);
pour le rendre insensible à la casse car le Galaxy S3 renvoyait "Android" au lieu de Android dans son agent utilisateur
Ce code vérifie la version complète de Android de l'agent utilisateur.
var test = LowerThanAndroidVersion('4.4');
if (test) {
alert('lower than Android 4.4')
} else if (test == undefined) {
alert('no Android')
} else {
alert('Android 4.4 or higher');
}
function LowerThanAndroidVersion(testversion) {
//var useragent = 'Mozilla/5.0 (Linux; U; Android 4.3.1; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30';
var useragent = navigator.userAgent;
var androidpoint = useragent.indexOf('Android');
if (androidpoint >= 0) {
var rest = useragent.substring(androidpoint + 8, useragent.length);
var version = rest.substring(0, rest.indexOf(';'));
return (version < testversion) ? true : false;
}
}
Les agents utilisateurs du lecteur de Motorola peuvent avoir les éléments suivants:
Linux;Android ; Release/4.1.2
J'ai donc dû commencer à utiliser l'expression rationnelle suivante:
[a|A]ndroid[^\d]*([\d[_|.]]+\d)
J'ai fait cette fonction et j'ai très bien fonctionné dans Android 2.6.3, 4.2.2., 6.0.1 dans différents navigateurs et appareils. Je pense que cela peut être une alternative.
function check_Android_version()
{
var ua = navigator.userAgent;
ua = ua.toLowerCase();
var and_pos = ua.search("Android");
if(and_pos == -1)
return 0; //not Android
var pv_pos = ua.indexOf(";", and_pos);
var versao = ua.slice(and_pos+8, pv_pos);
return versao;
}
C'est assez simple, tout d'abord, recherchez le mot "Android". S'il n'est pas trouvé, renvoie 0 (n'est pas un Android). Recherchez ensuite le premier ';' après la position "Android" qui marque la fin de la version. Une fois que ces positions sont obtenu, la "tranche" isole les numéros de version (que "+8" supprime le mot "Android" du résultat final) puis revient.
Si quelqu'un trouve un défaut, ce serait bien de le partager.
1- Le téléphone Windows a introduit un faux agent utilisateur "Android", donc cet accord avec lui
2- Comme l'a souligné @andy, il existe des modèles avec ce format: Android /#.##
3- Vous pouvez utiliser le drapeau/i pour ne pas respecter la casse
4- Ce code vous redonne NaN quand ce n'est pas Android et la version en float quand elle l'est.
5- Si vous trouvez plus de faux téléphones Android téléphones, il vous suffit d'ajouter la chaîne comme ceci: (?: Windows phone | faux téléphone | Android ... ........
alert( parseFloat(navigator.userAgent.match(/.*?(?:windows phone|Android\D+([0-9\.]*))|()/i)[1]) );
Il est préférable de vérifier d'abord si l'appareil est Android ou non, car Windows mobile peut avoir Android dans son agent utilisateur).
Exemple: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1;;) AppleWebKit/(KHTML, comme Gecko) Chrome/Mobile Safari/Edge /.
Voici le moyen de le vérifier Détection d'iOS/Android Système d'exploitation