2011-05-17 63 views

回答

173

看看是:http://davidwalsh.name/detect-android

的JavaScript:

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

PHP:

$ua = strtolower($_SERVER['HTTP_USER_AGENT']); 
if(stripos($ua,'android') !== false) { // && stripos($ua,'mobile') !== false) { 
    header('Location: http://android.davidwalsh.name'); 
    exit(); 
} 
+1

你的先生是一個傳奇。 – Xavier 2011-05-17 13:30:23

+5

別忘了檢查Android平板電腦:http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html – 2011-05-17 13:35:33

+2

值得注意的是,這並不總是爲Android設備工作,例如,由Kindle Fire HD設備報告的用戶代理根本不包含「android」這個詞。 – djbp 2013-06-11 13:54:21

-2

js版,iPad的捕捉太:

var is_mobile = /mobile|android/i.test (navigator.userAgent); 
+3

無法正常工作,因爲它捕獲了許多設備,而不僅僅是問題所需的Android。 – NickG 2013-12-20 09:57:49

+1

至少使用這樣的東西:/android.*(?=mobile)/i.test(navigator.userAgent);檢測Android手機。但是這個正則表達式包含「昂貴的」量詞,所以Philip的2個獨立測試的答案可能更合適。 – 2015-07-31 16:07:14

2
;(function() { 
    var redirect = false 
    if (navigator.userAgent.match(/iPhone/i)) { 
     redirect = true 
    } 
    if (navigator.userAgent.match(/iPod/i)) { 
     redirect = true 
    } 
    var isAndroid = /(android)/i.test(navigator.userAgent) 
    var isMobile = /(mobile)/i.test(navigator.userAgent) 
    if (isAndroid && isMobile) { 
     redirect = true 
    } 
    if (redirect) { 
     window.location.replace('jQueryMobileSite') 
    } 
})() 
1

我覺得米哈爾的回答是最好的,但我們可以把它更進一步,動態加載一個Android CSS按原來的問題:

var isAndroid = /(android)/i.test(navigator.userAgent); 
if (isAndroid) { 
    var css = document.createElement("link"); 
    css.setAttribute("rel", "stylesheet"); 
    css.setAttribute("type", "text/css"); 
    css.setAttribute("href", "/css/android.css"); 
    document.body.appendChild(css); 
} 
+0

爲什麼你想要這樣做,而你可以使用媒體查詢? JS設備檢測應僅用於增強功能,如添加邀請以安裝您的應用程序。頁面渲染永遠不應該依賴它,因爲你會遇到性能問題和可怕的可用性經驗。 – camilokawerin 2016-04-01 22:13:54

+0

@camilokawerin您的回覆應該直接發給作者。我只是在回答他的問題。有些情況下,你想要特定於平臺的CSS。例如,如果您希望界面的視覺樣式與設備匹配。 – drlarsen 2016-04-05 21:15:47

4

這裏不需要jQuery。如前所述,您應該使用用戶代理屬性對其進行檢查。如果你對檢測其他平臺感興趣,或者只是在移動設備上感興趣,我寫了這個可以檢測到的is-mobile component

隨意導入和使用如在這些例子:

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.Windows() => true/false 
isMobile.KindleFire() => true/false 
isMobile.any() => true/false 
+1

您的解決方案非常棒,但由於包含「android」關鍵字匹配的Mobile Edge用戶代理,因此它在檢查android時是否需要檢查它是否不是Windows。當然,這是一個小問題,因爲缺乏實際的Windows Phone設備。到目前爲止,這是我看到的最好的一頁。 – Felype 2017-06-07 13:05:26

+0

感謝您輸入@Felype!我已經更新了我的解決方案來處理您提到的邊緣案例。 – 2017-06-15 07:45:47