Я создаю веб-приложение и хочу отключить эффекты перехода на устройствах Android под версией 3.0.
Есть ли какой-нибудь способ поднять номер версии Android на Javascript в браузере? Если да, то как?
Я создаю веб-приложение и хочу отключить эффекты перехода на устройствах Android под версией 3.0.
Есть ли какой-нибудь способ поднять номер версии Android на Javascript в браузере? Если да, то как?
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
Используйте код ниже, чтобы получить 2-значную версию 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
}
}
Например
Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO). AppleWebKit/533.1 (KHTML, например, Gecko) Версия /4.0 Mobile Safari/533.1
вернется Android Version = 2.2
Вы можете посмотреть строку пользовательского агента - window.navigator.userAgent
, описанную здесь: https://developer.mozilla.org/en/DOM/window.navigator.userAgent
Если вы действительно пытаетесь обнаружить, есть ли у вас версия браузера, поддерживающая определенную функцию, то почти всегда лучше использовать обнаружение функций вместо обнаружения версии браузера. modernizr - это огромная база кода для обнаружения функций, которую вы можете использовать как есть или заимствовать одну конкретную деталь или просто узнать, как работает общая техника.
Когда я Google, я вижу строки пользовательского агента, подобные этому для 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
Регулярное выражение /Android\s+([\d\.]+)/
на window.navigator.userAgent
подберет номер версии Android.
Я не могу прокомментировать, потому что у меня недостаточно рекламы... Просто хотел добавить, что мне пришлось изменить код neiker на
var match = ua.match(/Android\s([0-9\.]*)/i);
чтобы сделать регистр нечувствительным, потому что Galaxy S3 возвращал "андроид" вместо Android в свой пользовательский агент
Пользовательские агенты пользователя Motorola могут иметь следующее:
Linux;Android ; Release/4.1.2
Итак, мне пришлось начать использовать следующее регулярное выражение:
[a|A]ndroid[^\d]*([\d[_|.]]+\d)
Этот код проверяет полную версию Android от 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;
}
}
Я сделал эту функцию и отлично поработал в Android 2.6.3, 4.2.2., 6.0.1 в разных браузерах и устройствах. Я думаю, что это может быть альтернативой.
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;
}
Это довольно просто, во-первых, поиск слова "андроид". Если не найден, возвращается 0 (не является пользовательским агентом Android). Затем найдите первый ';' после позиции "android", которая знаменует конец версии. Как только эти позиции будут получены, "срез" изолирует номера версий (что "+8" удаляет слово "андроид" конечного результата), а затем возвращается.
Если кто-то найдет какой-то недостаток, было бы приятно поделиться.
Лучше сначала проверить, является ли устройство Android или нет, поскольку Windows Mobile может иметь Android в своем пользовательском агенте.
Пример: Mozilla/5.0 (Windows Phone 10.0, Android 4.2.1;;) AppleWebKit/(KHTML, например, Gecko) Chrome/Mobile Safari/Edge/.
Вот способ проверить это Обнаружение операционной системы iOS/Android
Как уже упоминалось, версии Android обычно имеют два или три числа, и лучше всего получить всю версию. Есть много крайних случаев для обнаружения вашей версии платформы /os, поэтому я написал этот компонент detect-os-version, чтобы его централизовать.
Не стесняйтесь импортировать его и использовать, как показано в следующих примерах:
detectOsVersion.get() => {os: 'Android', version: '4.2.2'}
detectOsVersion.get() => {os: 'iOS', version: '5.1.1'}
detectOsVersion.get() => {os: 'BlackBerry', version: '7.1.0.346'}
detectOsVersion.get() => {os: 'Windows', version: '8.1'}
detectOsVersion.get() => {os: 'Mac', version: '10.7.1'}