2011-05-17 18 views

cevap

173

Şuna bir göz atın: http://davidwalsh.name/detect-android

JavaScript:

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

:

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

size efendim bir efsane vardır. – Xavier

+5

android tabletleri de kontrol etmeyi unutmayın: http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html –

+2

Bu, her zaman olmadığı anlamına gelmez. Örneğin, Android cihazlar için çalışan Kindle Fire HD cihazları tarafından bildirilen kullanıcı aracıları 'android' kelimesini içermez. – djbp

-2

js versiyonu da iPad'i yakalar:

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

Çalışması, yalnızca Android'in gerektirdiği gibi birçok cihazı yakaladığı için çalışmaz. – NickG

+1

En azından şu gibi bir şey kullanın: /android.*(?=mobile)/i.test(navigator.userAgent); Android telefonu tespit etmek. Ancak bu regex “pahalı” niceleyicileri içerir, bu yüzden Philip'in 2 ayrı testle yanıtı daha uygun olabilir. –

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

Ben Michal'ın cevabı iyi olduğunu düşünüyorum, ama biz bir adım daha ileri götürün ve dinamik asıl soruya göre bir Android CSS yükleyebilirsiniz :

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

Medya sorgularını kullanırken niçin bunu yapmak istersiniz? JS cihaz algılama, uygulamanızı yüklemek için bir davetiye eklemek gibi yalnızca geliştirme için olmalıdır. Sayfa oluşturma, hiçbir zaman performans sorunlarına ve korkunç bir kullanılabilirlik deneyimine sahip olacağınız için ona güvenmemelidir. – camilokawerin

+0

@camilokawerin Cevabınız yazara yönlendirilmelidir. Onun sorusuna sadece bir cevap veriyordum. Platform spesifik CSS'yi kullanmak istediğiniz durumlar var. Örneğin, arayüzün görsel stilinin cihazla eşleşmesini istiyorsanız. – drlarsen

4

Burada jQuery'ye gerek yoktur. Daha önce de belirtildiği gibi, kullanıcı aracısı özelliğini kullanarak kontrol etmelisiniz. Diğer platformları da ya da genel olarak bir mobil cihazda olup olmadığınızı merak ediyorsanız, bunu algılayabilen bu is-mobile component'u yazdım. Bu örneklerde görüldüğü gibi

içe ve kullanmak için çekinmeyin:

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

Çözümünüz harika, ancak hala "android" anahtar kelimesini içeren Mobile Edge kullanıcı aracısı nedeniyle android için kontrol ederken pencerelerinin olmadığını kontrol etmek gerekiyor. Tabii ki bu gerçek windows telefon cihazları eksikliği nedeniyle küçük bir sorundur. Şimdiye kadar bu sayfada gördüğüm en iyisi. – Felype

+0

Girdi @Felype için teşekkürler! Bahsettiğiniz uç durumu ele almak için çözümümü güncelledim. –

İlgili konular