检测浏览器是否在Android或iOS设备上运行

时间:2012-09-26 16:26:02

标签: javascript jquery html browser

我需要在移动网站上更改一些按钮和文字,具体取决于用户是在Android或iOS浏览器上查看。有可靠的方法来执行检查吗?

4 个答案:

答案 0 :(得分:143)

var isMobile = {
    Windows: function() {
        return /IEMobile/i.test(navigator.userAgent);
    },
    Android: function() {
        return /Android/i.test(navigator.userAgent);
    },
    BlackBerry: function() {
        return /BlackBerry/i.test(navigator.userAgent);
    },
    iOS: function() {
        return /iPhone|iPad|iPod/i.test(navigator.userAgent);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());
    }
};

答案 1 :(得分:13)

我会使用navigator.useragent属性获取useragent-string,解析它并检测操作系统。

Here就是如何做到这一点的一个例子。

<强>更新

由于这个问题很受欢迎,我想我会在答案中添加一些额外的信息。

一般来说,浏览器嗅探几乎不是最好的方法。为什么?嗯,原因有很多,但这里有两个好的原因:

  1. 几乎在所有情况下,当人们转向浏览器嗅探时,功能检测将是更好的选择。根据用户可能正在使用的操作系统/浏览器,有一些罕见的边缘情况可能是适当的,但在大多数情况下,使用像Modernizr这样的库来检测对特定功能的支持是一种更好的方法去。尝试使您的网站/应用程序适应特定的浏览器,而不是他们支持的功能是一个滑坡。而是检查浏览器是否支持您需要的功能,并在缺少支持时提供polyfill或提供良好的后备功能。
  2. 浏览器嗅探非常复杂。为什么?因为几乎每个浏览器都在其用户代理字符串中,或​​者缺少足够的信息来允许某种识别。
  3. 话虽如此,如果你真的需要使用浏览器/操作系统检测,那么不要重新发明轮子,不要试图自己做 - 你将陷入一个痛苦和模糊的世界注意事项!我建议您使用像WhichBrowser这样的库,它将为您提供一个方便的JavaScript对象,其中包含有关操作系统,浏览器,渲染引擎和设备的信息。

答案 2 :(得分:1)

您可以使用导航器对象:http://www.w3schools.com/js/js_browser.asp,然后根据导航器的属性使用if语句。

答案 3 :(得分:0)

我已经使用了一段时间了。基于移动设备进行简单检查以查看返回true或false。

var isMobile = (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Windows Phone/i.test(navigator.userAgent)) ? true : false;