69

我需要根据用户是在 Android 浏览器还是 iOS 浏览器上查看移动网站上的一些按钮和文本。是否有可靠的方法来执行检查?

4

4 回答 4

152
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());
    }
};
于 2012-09-26T16:29:26.830 回答
13

我将使用该navigator.useragent属性来获取用户代理字符串、解析它并检测操作系统。

是您如何做到这一点的一个示例。

更新:

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

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

  1. 在人们转向浏览器嗅探的几乎所有情况下,特征检测都是更好的选择。在极少数情况下,根据用户可能使用的操作系统/浏览器采取行动可能是合适的,但在大多数情况下,使用像Modernizr这样的库来检测对特定功能的支持是一种更好的方法。试图使您的站点/应用程序适应特定的浏览器而不是它们支持的功能是一个滑坡。相反,请检查浏览器是否支持您需要的功能,并在缺少支持时使用 polyfill 或提供不错的回退。
  2. 浏览器嗅探极其复杂。为什么?因为几乎每个浏览器都位于它们的用户代理字符串中,或​​者缺少足够的信息来进行特定的识别。

话虽如此,如果你真的需要使用浏览器/操作系统检测,那么不要重新发明轮子,也不要试图自己去做——你将进入一个痛苦和晦涩的警告世界!我建议你使用像WhichBrowser这样的库,它会为你提供一个方便的 JavaScript 对象,其中包含有关操作系统、浏览器、渲染引擎和设备的信息。

于 2012-09-26T16:29:14.223 回答
1

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

于 2012-09-26T16:28:30.910 回答
0

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

var isMobile = (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Windows Phone/i.test(navigator.userAgent)) ? true : false;
于 2016-03-29T21:36:54.850 回答