2011-05-17 129 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