2

Android 设备是用户代理字符串的一部分:

Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9100 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1212030829) Presto/2.11.355 Version/12.10

Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; SAMSUNG-SGH-I317 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

但是,在拆分字符串时,设备可能驻留在不同的索引中;(有时它不存在)。有没有一种简单的方法可以在 Javascript/Ruby 中获取设备名称?

更新:澄清一下:我有兴趣获取设备名称,而不是 Android/版本

4

2 回答 2

0

如果它不存在,就没有办法让它存在.. 如果它是“Android xyz;”的形式,正则表达式是你的朋友

假设“user_agent”包含用户代理字符串:

红宝石,例如

user_agent[/Android (.*?);/]

变量 $1 将包含版本。

Javascript

var version = user_agent.match("Android (.*?);")[1];
于 2012-12-23T16:31:14.557 回答
0

如果您只需要一种方法来知道它是否是 Android 设备,那么 Javascript 代码可能很简单:

function isAndroid() {
    var ua = navigator.userAgent.toLowerCase();
    return (ua.indexOf("android") > -1);
}

如果您也对版本感兴趣,请尝试以下 Javascript 代码:

function getAndroidVersion() {
    var androidVersion = -1; // def value, for non-Android devices
    var ua = navigator.userAgent.toLowerCase();
    var androidIndex = ua.indexOf('android');

    if(androidIndex != -1) {
        var versionStartIndex = androidIndex + 8;
        var versionEndIndex = ua.indexOf(';', versionStartIndex);

        androidVersion = parseFloat(ua.slice(versionStartIndex, versionEndIndex));
    }

    return androidVersion;
}
于 2012-12-23T17:36:38.803 回答