Подберите версию Android в браузере на Javascript
Я создаю веб-приложение и хочу отключить эффекты переходов на устройствах Android версии 3.0.
есть ли в любом случае, чтобы забрать номер версии Android с помощью Javascript в браузере? Если да, то как?
8 ответов:
function getAndroidVersion(ua) { ua = (ua || navigator.userAgent).toLowerCase(); var match = ua.match(/android\s([0-9\.]*)/); return match ? match[1] : false; }; 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) Version/4.0 Mobile Safari/533.1
вернутся Android Версии = 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\.]+)/
onwindow.navigator.userAgent
будет забрать номер версии Android.
Я не могу комментировать, потому что у меня недостаточно репутации... Просто хотел добавить, что мне пришлось изменить neiker код
var match = ua.match(/Android\s([0-9\.]*)/i);
чтобы сделать его нечувствительным к регистру, потому что Galaxy S3 возвращал "android" вместо 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; }
Это довольно просто, во-первых, поиск слова "android". Если не найдено, возвращает 0 (не является агентом пользователя Android). Затем найдите первый '; 'после позиции "android", которая отмечает конец версии. Как только эти позиции получены, "срез" изолирует номера версий (что "+8 " удаляет слово "android" конечного результата), а затем возвращается.
Если кто-то найдет какой-либо недостаток, было бы неплохо поделиться.
лучше сначала проверить, является ли устройство android или нет, поскольку Windows mobile может иметь Android в своем агенте пользователя.
пример: Mozilla/ 5.0 (Windows Phone 10.0; Android 4.2.1; ; ) AppleWebKit/ (KHTML, like Gecko) Chrome/ Mobile Safari/Edge/.
вот способ проверить это обнаружение операционной системы iOS / Android