2013-02-05 19 views
10

Chcę wykryć z javascript rodzimej przeglądarki Android (ten, który jest zainstalowany na każdym telefonie z systemem Android).Wykrywanie Javascript Javascript rodzimej przeglądarki

Czego powinienem szukać w useragencie?

+1

Jeden rozmiar nie pasuje do wszystkich. Niektóre telefony z Androidem udają iPhone'a za użytkownika iPhone'a. – Raptor

+0

Nie rozumiem "wykrywania cech", czy możesz wyjaśnić? – Razvan

+1

[agent użytkownika przeglądarki javascript dla systemu Android] (https://www.google.com/search?q=javascript+anduser+użytkownika) - [Wykrywanie go za pomocą funkcji google] (https://www.google.com/ search? q = js + feature + detection) – Trey

Odpowiedz

15

To powinno zadziałać.

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

Wygląda na to, że nie działa on w nowszych przeglądarkach giełdowych ... – dvLden

+0

Wygląda na to, że nie działa on na Androidzie 4.4+ (zmieniły rodzimą przeglądarkę). – Chambeur

-3

spróbować czegoś takiego:

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 
if(isAndroid) { 
    // Do something 
} 

lub

check URL: http://davidwalsh.name/detect-android

+0

To będzie pasowało również do Firefoksa na Androida. – fnagel

+0

To wykrywa tylko system operacyjny - nie ma nic wspólnego z pytaniem, które użytkownik zadał. – mummybot

3

Zobacz this page na przegląd różnych ciągów agenta użytkownika.

+0

Nie jestem pewien, dlaczego jesteś odrzucany, to dobry zasób. – nym

8

Native przeglądarka nie mogliśmy wykryć na pierwszy iść sama, wykorzystując wspomniany powyżej kod:

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

jak dla większości urządzeń mamy następujące jako agenta użytkownika dla przeglądarki Chrome:

enter image description here

iw natywnej przeglądarki:

enter image description here

Przeprowadziłem tę obserwację dla Samsunga Galaxy S3, htc desire, Asus Zenfone5.


Okazało się, że "Chrome/30.0.0.0" lub "chrome /" wraz z wersją są obecne w przypadku większości urządzeń, w tym Zenfone 5, Samsung Galaxy s3. Ale "wersja /" nie. Obecność w obiekcie użytkownika użytkownika jest wystarczająca, aby odróżnić natywną od Chrome.

Użyliśmy następujący kod:

var ua = navigator.userAgent; 
var is_native_android = ((ua.indexOf('Mozilla/5.0') > -1 && ua.indexOf('Android ') > -1 && ua.indexOf('AppleWebKit') > -1) && (ua.indexOf('Version') > -1)); 

Nadzieję, że to przydatne dla Ciebie zbyt ... :)

+0

Czy to nadal ma zastosowanie w macierzystej przeglądarce Androida 5.1.1? Ponieważ mogę dostać się do 'var is_native_android = ua.indexOf (" android ")> -1 && ua.indexOf (" mobile ") && ua.indexOf (" chrome ")> -1', ale wszystkie inne identyfikatory wydają się nie zdać. Wygląda na to, że natywna przeglądarka używa AppleWebkit - Mozilla/5.0. – cptstarling

+0

Wydaje się, że działa to zarówno w starszych, jak i nowszych przeglądarkach giełdowych z Androidem. – dvLden

+0

To nie zadziała w systemie Android 6.0.1 (przynajmniej nie w moim amerykańskim T-mobile S6). Natywna przeglądarka jest teraz oparta na Chrome i naprawdę trudno jest odróżnić. Jedyną różnicą, jaką zobaczyłem, były słowa specyficzne dla producenta (dla mnie kilka razy powiedział Samsung). S7 mojego przyjaciela nie ma już natywnej przeglądarki, więc Chrome jest teraz rodzimą przeglądarką dla tego telefonu. Ale dobre jest to, że nie ma już znaczenia, ponieważ oba powinny być podobne – Francisc0

Powiązane problemy