Ich entwickle eine Web-App und möchte Übergangseffekte auf Android-Geräten unter Version 3.0 deaktivieren.
Gibt es eine Möglichkeit, die Android-Versionsnummer per Javascript im Browser abzurufen? Wenn das so ist, wie?
Daniel Ryan
Ich entwickle eine Web-App und möchte Übergangseffekte auf Android-Geräten unter Version 3.0 deaktivieren.
Gibt es eine Möglichkeit, die Android-Versionsnummer per Javascript im Browser abzurufen? Wenn das so ist, wie?
Neiker
function getAndroidVersion(ua) {
ua = (ua || navigator.userAgent).toLowerCase();
var match = ua.match(/android\s([0-9\.]*)/i);
return match ? match[1] : undefined;
};
getAndroidVersion(); //"4.2.1"
parseInt(getAndroidVersion(), 10); //4
parseFloat(getAndroidVersion()); //4.2
parseFloat
nimmt nur ein Argument, also keine Notwendigkeit für die ,10
Am Ende. (Ich würde es selbst bearbeiten, aber Bearbeitungen müssen mindestens 6 Zeichen ändern.)
– craigpatik
8. Januar 2014 um 21:08 Uhr
parseFloat only takes one argument
: Behoben
– Roman Holzner
11. April 2014 um 13:06 Uhr
Aus dem Kommentar unten von andy kann der Benutzeragent lauten: “Linux;Android; Release/4.1.2” Dies bedeutet, dass dies auf diesen Motorola-Geräten fehlschlagen würde.
– Daniel Ryan
6. Juli 2014 um 21:40 Uhr
Ich denke, Sie sollten hinzufügen , 10
am Ende, andernfalls, wenn die Zahl mit 0 beginnt, wird sie als Oktalzahl geparst. Versuchen Sie einfach Folgendes auszuführen: alert(parseInt(021))
. Sie sehen 17, nicht 21
– Benutzer1613797
16. Januar 2015 um 9:22 Uhr
Ich stimme user1613797 zu, parseInt nimmt ein zweites optionales Argument, nämlich die Basis/Basis. Die Angabe als 10 hilft bei Zahlen, die mit 0 beginnen, und stellt sicher, dass sie nicht als Oktalzahlen behandelt werden
– Katalin Berta
3. Juli 2017 um 12:26 Uhr
Göhel Kiran
Verwenden Sie den folgenden Code, um eine zweistellige Version von Android zu erhalten
var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8));
if (androidversion < 2.3)
{
// do whatever
}
}
Zum Beispiel
Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, wie Gecko) Version/4.0 Mobile Safari/533.1
wird Android Version = 2.2 zurückgeben
Wenn Ihnen meine Antwort gefällt und für Sie nützlich ist, stimmen Sie bitte ab und akzeptieren Sie die Antwort
– Gohel Kiran
20. September 2012 um 8:48 Uhr
Die Verwendung von indexOf + 8 ist eine wirklich schlechte Praxis, wenn Sie so gut wie nichts über Eingabezeichenfolgen wissen.
– Alexej
26. August 2014 um 12:57 Uhr
@Alexey das Skript prüft bereits, ob Android in der Zeichenfolge (2. Zeile) vorhanden ist. Daher würde ich nicht zustimmen, dass dies eine blinde indexOf-Operation ist, da sie immer die Position zurückgibt, die das Ende der Android-Zeichenfolge plus ein Zeichen markiert.
– Vexter
6. Januar 2015 um 8:48 Uhr
Ich kann nicht kommentieren, weil ich nicht genug Repräsentanten habe … Ich wollte nur hinzufügen, dass ich Neikers Code ändern musste
var match = ua.match(/Android\s([0-9\.]*)/i);
um die Groß-/Kleinschreibung zu ignorieren, da das Galaxy S3 in seinem Benutzeragenten “Android” anstelle von Android zurückgab
jfriend00
Sie können sich die Zeichenfolge des Benutzeragenten ansehen – window.navigator.userAgent
hier beschrieben: https://developer.mozilla.org/en/DOM/window.navigator.userAgent
Wenn Sie wirklich feststellen möchten, ob Sie eine Version des Browsers haben, die eine bestimmte Funktion unterstützt, ist es fast immer besser, die Funktionserkennung anstelle der Browserversionserkennung zu verwenden. modernizr ist eine riesige Codebasis für die Feature-Erkennung, die Sie entweder unverändert verwenden oder ein bestimmtes Stück ausleihen oder einfach lernen können, wie die allgemeine Technik funktioniert.
Wenn ich google, sehe ich User-Agent-Strings wie diese für 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
Eine Regex von /Android\s+([\d\.]+)/
an window.navigator.userAgent
wird die Android-Versionsnummer abrufen.
Die Player-Benutzeragenten von Motorola können Folgendes haben:
Linux;Android ; Release/4.1.2
Also musste ich anfangen, die folgende Regex zu verwenden:
[a|A]ndroid[^\d]*([\d[_|.]]+\d)
Dieser Code überprüft die Vollversion von Android aus dem Useragent.
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;
}
}
Ich habe diese Funktion erstellt und funktionierte sehr gut in Android 2.6.3, 4.2.2., 6.0.1 in verschiedenen Browsern und Geräten. Ich denke das kann eine Alternative sein.
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;
}
Das ist ganz einfach, suchen Sie zuerst nach dem Wort “Android”. Wenn nicht gefunden, wird 0 zurückgegeben (ist kein Android-Benutzeragent). Suchen Sie dann nach dem ersten ‘;’ nach der “Android”-Position, die das Ende der Version markiert. Sobald diese Positionen abgerufen wurden, isoliert der ‘Slice’ die Versionsnummern (dass ‘+8’ das Wort “Android” aus dem Endergebnis entfernt) und kehrt dann zurück.
Wenn jemand einen Fehler findet, wäre es nett zu teilen.
Wenn Sie Cordova verwenden, können Sie device.version verwenden
– Lakshay Dulani
9. Juni 2016 um 5:18 Uhr