回答
看看是: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();
}
js版,iPad的捕捉太:
var is_mobile = /mobile|android/i.test (navigator.userAgent);
无法正常工作,因为它捕获了许多设备,而不仅仅是问题所需的Android。 – NickG 2013-12-20 09:57:49
至少使用这样的东西:/android.*(?=mobile)/i.test(navigator.userAgent);检测Android手机。但是这个正则表达式包含“昂贵的”量词,所以Philip的2个独立测试的答案可能更合适。 – 2015-07-31 16:07:14
这个单线划线怎么样?
var isAndroid = /(android)/i.test(navigator.userAgent);
i
修饰符用于执行不区分大小写的匹配。从科尔多瓦AdMob的测试项目采取
技术:https://github.com/floatinghotpot/cordova-admob-pro/wiki/00.-How-To-Use-with-PhoneGap-Build
;(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')
}
})()
我觉得米哈尔的回答是最好的,但我们可以把它更进一步,动态加载一个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);
}
为什么你想要这样做,而你可以使用媒体查询? JS设备检测应仅用于增强功能,如添加邀请以安装您的应用程序。页面渲染永远不应该依赖它,因为你会遇到性能问题和可怕的可用性经验。 – camilokawerin 2016-04-01 22:13:54
@camilokawerin您的回复应该直接发给作者。我只是在回答他的问题。有些情况下,你想要特定于平台的CSS。例如,如果您希望界面的视觉样式与设备匹配。 – drlarsen 2016-04-05 21:15:47
这里不需要jQuery。如前所述,您应该使用用户代理属性对其进行检查。如果你对检测其他平台感兴趣,或者只是在移动设备上感兴趣,我写了这个可以检测到的is-mobile component。
随意导入和使用如在这些例子:
isMobile.Android() => true/false
isMobile.iOS() => true/false
isMobile.Windows() => true/false
isMobile.KindleFire() => true/false
isMobile.any() => true/false
您的解决方案非常棒,但由于包含“android”关键字匹配的Mobile Edge用户代理,因此它在检查android时是否需要检查它是否不是Windows。当然,这是一个小问题,因为缺乏实际的Windows Phone设备。到目前为止,这是我看到的最好的一页。 – Felype 2017-06-07 13:05:26
感谢您输入@Felype!我已经更新了我的解决方案来处理您提到的边缘案例。 – 2017-06-15 07:45:47
- 1. Android手机或Android平板电脑通过http标头检测
- 2. Android - 手机边缘检测
- 3. 从手机Android检测ADB
- 4. 通过Ionic检测耳机
- 5. iPhone手机通话检测软件
- 6. Android检测到手机锁定事件
- 7. 通过查看视口是否受到检测来检测手机
- 8. 我们可以通过imei号码检测手机类型(android/symbian等)吗?
- 9. JavaScript |通过浏览器/手机类型检测WebKit
- 10. Android手势检测
- 11. 通过Android手机测试应用程序
- 12. 重启Android手机通过代码
- 13. 检测手机浏览器
- 14. 欺骗WURFL手机检测
- 15. 检测手机的Safari
- 16. Acelerometer:摇晃手机检测
- 17. 移动手机检测
- 18. 检测手机或Windows PHP
- 19. 检测Windows手机短信?
- 20. 通过相机进行人脸检测
- 21. 闪存测试Android手机
- 22. 检测Android手机在电池电量不足时关机
- 23. 通过Android相机检测人体脚部
- 24. 通过adb发送AT命令到Android手机通过adb
- 25. Android ViewFlipper +手势检测器
- 26. Android手势检测问题
- 27. 未通过altbeacon检测到iBeacon android库
- 28. Android Wear:如何通过通知通知智能手机
- 29. jQuery手机不通过ID
- 30. 短信通过GSM手机
你的先生是一个传奇。 – Xavier 2011-05-17 13:30:23
别忘了检查Android平板电脑:http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html – 2011-05-17 13:35:33
值得注意的是,这并不总是为Android设备工作,例如,由Kindle Fire HD设备报告的用户代理根本不包含“android”这个词。 – djbp 2013-06-11 13:54:21