通过 Javascript/jQuery 检测 Android 手机

如何检测正在使用的设备是移动网站的 Android 系统?

我需要将某些 css 属性应用到 Android 平台。

谢谢

135620 次浏览

看看这个: 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();
}

Edit : 正如在一些注释中指出的,这将在99% 的情况下工作,但是一些边缘情况不包括在内。如果你在 JS 中需要一个更高级的、防弹的解决方案,你应该使用 platform.JS: < a href = “ https://github.com/bestiejs/platform.JS”rel = “ norefrer”> https://github.com/bestiejs/platform.JS

Js 版本,也能抓住 iPad:

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

这句俏皮话怎么样?

var isAndroid = /(android)/i.test(navigator.userAgent);

i修饰符用于执行不区分大小写的匹配。


取自 Cordova 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')
}
})()

我认为 Michal 的回答是最好的,但是我们可以更进一步,根据最初的问题动态加载一个 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);
}