Как обнаружить только родной Android-браузер - PullRequest
22 голосов
/ 15 февраля 2012

Устройство Android легко обнаружить, но у меня возникают проблемы с обнаружением ТОЛЬКО собственного браузера Android.Проблема в том, что браузер Dolphin имеет почти идентичную строку агента пользователя, и я хотел бы узнать, используют ли они собственный браузер или нет ..

Возможно ли это?

Ответы [ 5 ]

19 голосов
/ 24 марта 2013

вам просто нужно протестировать несколько частей строки пользовательского агента, чтобы убедиться, что у вас установлен браузер Android по умолчанию:

var nua = navigator.userAgent;
var is_android = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1);

Вы можете использовать следующее, чтобы убедиться, что вы не соответствуете Chrome в Android, хотя на многих устройствах в настоящее время Chrome используется в качестве браузера по умолчанию.

var nua = navigator.userAgent;
var is_android = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1) && !(nua.indexOf('Chrome') > -1));

EDIT: Если вы хотите защитить от чувствительности к регистру, вы можете использовать следующее:

var nua = navigator.userAgent.toLowerCase();
var is_android = ((nua.indexOf('mozilla/5.0') > -1 && nua.indexOf('android ') > -1 && nua.indexOf('applewebkit') > -1) && !(nua.indexOf('chrome') > -1));
2 голосов
/ 02 сентября 2015

На Galaxy S3 я обнаружил, что и в Chrome, и в нативном браузере есть «AppleWebkit», поэтому я взял этот кусок из своего условного заявления. Я также добавил версию, поскольку она отображается только в родном браузере. У меня это работает как

var ua = navigator.userAgent;
var isAndroidNative = ((ua.indexOf('Mozilla/5.0') > -1) && (ua.indexOf('Android') > -1) && !(ua.indexOf('Chrome') > -1) && (ua.indexOf('Version') > -1))
2 голосов
/ 03 ноября 2014

Я думаю, что вы ищете это:

Собственный браузер Android не обновлен выше версии 534.30, поэтому вы можете фильтровать по версии и комбинации строк Android UA (выше мы можем предположить, что это браузер Chrome)

Вот мой пример кода JavaScript:

(Если вам нужна конкретная стилизация, я бы добавил класс к телу со следующим фрагментом JS)

var defectAndroid = $window.navigator && $window.navigator.userAgent.indexOf('534.30') > 0 && $window.navigator.userAgent.toLowerCase().match(/android/);

if (defectAndroid) {
   // sample code specific for your Android Stock browser
}

(некоторые устройства Android сообщают об «android», поэтому нам необходим разговор в нижнем регистре)

0 голосов
/ 02 марта 2014

Вы можете сделать это с помощью Javascript и функции useragent.Что вам нужно сделать, это сделать 2 If-запроса:

Сначала вы обнаружите тип устройства:

If android, ios, mobile, ipad, iphone 
   Take this setting

Теперь вы делаете столько, сколько вам нужно, если-запросы или кейс-запрос для определения типа браузера

If chrome, firefox, safari and so on
   Take this setting

Это в теории:)

0 голосов
/ 27 июля 2013
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {
    // Do something!
    // Redirect to Android-site?
    window.location = 'http://android.davidwalsh.name';
}
...