通过 Javascript / jQuery 检测 Android 手机

IT技术 javascript jquery android
2021-02-01 15:00:44

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

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

谢谢

5个回答

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

编辑:正如一些评论中所指出的,这将适用于 99% 的情况,但不包括某些边缘情况。如果您需要更高级且防弹的 JS 解决方案,您应该使用 platform.js:https : //github.com/bestiejs/platform.js

值得注意的是,这并不总是适用于 android 设备,例如,Kindle Fire HD 设备报告的用户代理根本不包含“android”这个词。
2021-03-16 15:00:44
JS解决方案的前两行可以简化为: var isAndroid = /Android/i.test(navigator.userAgent)
2021-03-18 15:00:44
您的解决方案不起作用。这是诺基亚 Lumia 用户代理。你猜怎么着?它匹配为 android :Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 625; Orange) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537
2021-03-24 15:00:44
navigator.userAgent 方法不适用于三星 Galaxy 设备。浏览器规范中没有“Android”。
2021-03-26 15:00:44
不要忘记检查安卓平板电脑:googlewebmastercentral.blogspot.com/2011/03/...
2021-03-28 15:00:44

这个单线怎么样?

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

此处可以省略括号,因为您不需要“捕获”结果,因此它变为: /android/i
2021-04-01 15:00:44

我认为 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);
}
@camilokwerin 您的回复应直接发送给作者。我只是简单地回答他的问题。但在某些情况下,您需要特定于平台的 CSS。例如,如果您希望界面的视觉风格与设备相匹配。
2021-04-13 15:00:44
为什么要这样做,而您可以使用媒体查询?JS 设备检测应该仅用于增强功能,例如添加安装应用的邀请。页面渲染永远不应该依赖它,因为你会遇到性能问题和糟糕的可用性体验。
2021-04-14 15:00:44
;(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')
    }
})()

js 版本,也适用于 iPad:

var is_mobile = /mobile|android/i.test (navigator.userAgent);
至少使用这样的东西:/android.*(?=mobile)/i.test(navigator.userAgent); 检测Android手机。但是这个正则表达式包含“昂贵”的量词,所以菲利普的回答与 2 个单独的测试可能更合适。
2021-03-16 15:00:44
不起作用,因为它可以捕获许多设备,而不仅仅是问题所需的 Android。
2021-03-31 15:00:44