2012-02-15 2 views
22

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

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

+0

возможно дубликат [Автоопределение мобильного браузера (через агента пользователя?)] (Http://stackoverflow.com/questions/1005153/auto-detect-mobile-browser-via- user-agent) –

+5

Я так не думаю? это общая стратегия. Это для JUST собственного браузера на Android 2.X, 3.X, 4.X – Baconbeastnz

+0

http://www.zytrax.com/tech/web/mobile_ids.html Вы должны уловить пользовательский агент, возможно, дистрибутив также.Но, как и в случае с Android, это легко настраивается. –

ответ

19

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

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

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

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)); 
+5

Это вернет true даже для браузера Chrome в Android? – HashCoder

+0

chrome является браузером по умолчанию, когда вы добираетесь до 4.1. – bizzehdee

+1

Это не похоже на случай. У меня есть Samsung Galaxy S3, работающий под управлением Android 4.1.2, а браузер по умолчанию - браузер Android (а не хром). –

-7
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'; 
} 
+1

Это просто обнаруживает Android в целом, а не различия между различными браузерами, доступными на Android (именно это и искал оригинальный вопрос). – Scottie

-11

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

Прежде всего определить тип устройства:

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

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

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

Thats это в теории :)

2

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

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-устройства сообщают «андроид», поэтому нам нужен разговор в нижнем регистре)

+0

Что делать, если версия 533.1 похожа на Android GingerBread? Однако это не удастся. – ayjay

+1

Тем временем я нашел это, нет четкого ответа на этот вопрос Отметьте: http://slides.com/html5test/the-android-browser#/ –

+1

@PeterM, Спасибо за ссылку на эти слайды, вы просто разрушил мой день;) –

2

На галактике 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)) 
+1

ДА - это единственный правильный ответ. Все остальные полагают, что Chrome не упоминается в UA, что неверно. – itamar

+0

К сожалению, он не работал на Samsung S5 Mini Android 4.4.2, потому что в строке пользовательского агента был «Chrome», когда использовался Android-браузер по умолчанию ... – user2718671

+0

... и на Samsung Galaxy Note S3 нет «версии строка – user2718671

Смежные вопросы