2013-02-05 165 views
10

我想用javascript檢測原生android瀏覽器(每個android手機上安裝的瀏覽器)。Javascript檢測android原生瀏覽器

我應該在useragent中尋找什麼?

+1

一個尺寸不適合所有。一些Android手機將自己裝扮成iPhone與iPhone的用戶代理。 – Raptor

+0

我不明白「功能檢測」,你能解釋一下嗎? – Razvan

+1

[https://www.google.com/search?q=javascript+android+user+agent] - [googling js feature detection](https://www.google.com/)搜索?q = js +特徵+檢測) – Trey

回答

15

這應該工作。

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

這似乎並沒有工作在較新的股票瀏覽器... – dvLden

+0

它似乎不適用於Android 4.4+(他們改變了原生瀏覽器) – Chambeur

-3

嘗試這樣:

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

檢查這個網址: http://davidwalsh.name/detect-android

+0

這也會在Android上匹配Firefox。 – fnagel

+0

這隻檢測操作系統 - 與用戶問的問題無關。 – mummybot

3

針對不同的用戶代理字符串的概述見this page

+0

我不確定你爲什麼被低估,這是一個很好的資源。 – nym

8

原生瀏覽器,我們無法在第一檢測去本身,使用上述代碼:

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

對於大多數設備,我們得到了以下的用戶代理爲Chrome瀏覽器:

enter image description here

,並在本機瀏覽器:

enter image description here

而且對三星Galaxy S3,htc願望,華碩Zenfone5進行了這樣的觀察。



發現包括Zenfone 5,Samsung Galaxy s3在內的大多數設備都會出現「Chrome/30.0.0.0」或「chrome /」以及版本。但「版本/」沒有。出現在用戶代理對象中足以區分本機和Chrome。

我們用下面的代碼:

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

希望,爲你很有用太... :)

+0

這是否仍然適用於Android 5.1.1的本地瀏覽器?因爲我可以得到'var is_native_android = ua.indexOf(「android」)> -1 && ua.indexOf(「mobile」)&& ua.indexOf('chrome')> -1'但所有其他標識符似乎失敗。它看起來像本地瀏覽器使用AppleWebkit - Mozilla/5.0。 – cptstarling

+0

這似乎是舊的以及更新的Android股票瀏覽器。 – dvLden

+0

這不適用於Android 6.0.1(至少不在我的美國T-mobile S6上)。原生瀏覽器現在基於Chrome,很難區分。我看到的唯一區別是製造商特定的詞(對我來說它說三星幾次)。我的朋友的S7甚至沒有原生瀏覽器了,Chrome現在是該手機的原生瀏覽器。但好事是我猜這已經不重要了,因爲兩者應該是相似的 – Francisc0