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


Answers:


149
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());
    }
};

不幸的是,Android手机和平板电脑将被识别为移动设备,因此平板电脑最终将具有手机视图。
Sinaesthetic

1
在我的iPad mini上,iOS功能可在野生动物园中使用,但在使用Google chrome时无法使用。在我的iPhone 5上,它既可以在野生动物园中使用,也可以在Chrome中使用。编辑:我在iPhone上有iOS 7,在iPad上有
iOS6

对于希望在此处报告损坏的将来的用户,请包括用户代理字符串。
lulalala 2014年

8
首先应更改Windows Phone的平台顺序。 由于许多网站都使用这种操作系统检测,但忽略了Windows Phone,因此Microsoft决定将“ Android”和“ iPhone”也放入userAgent String中。我在网站上使用了此答案,但我的Lumia 1520始终被认可为Android设备。因此,在测试Android和iOS之前,您应该测试“ IEMobile”。
Kilian Batzner 2015年

@Anoop应该更新他的答案,并将Windows Phone放在第一位,以解决andrino先前评论中提到的错误。
贾斯丁

13

我将使用该navigator.useragent属性来获取useragent-string,对其进行解析并检测OS。

这里是一个如何做的例子。

更新:

由于这个问题的受欢迎程度,我想我会在回答中添加一些其他信息。

通常,浏览器嗅探几乎绝不是最好的方法。为什么?好吧,有很多原因,但是有两个很好的理由:

  1. 在几乎所有情况下,当人们转向浏览器嗅探时,功能检测将是一个更好的选择。在极少数情况下,根据用户可能使用的OS /浏览器采取适当的操作可能是合适的,但在大多数情况下,使用类似Modernizr之来检测对特定功能的支持是一种更好的方法。尝试使您的站点/应用程序适应特定的浏览器,而不是它们所支持的功能有些滑坡。而是检查浏览器是否支持所需的功能,并在缺乏支持时填充或提供不错的备用。
  2. 浏览器嗅探极其复杂。为什么?因为几乎每个浏览器都位于其用户代理字符串中,或​​者缺少足够的信息以致无法确定身份。

话虽如此,如果您确实确实需要使用浏览器/ OS检测,那么不要重新发明轮子,也不要尝试自己动手做-您将陷入痛苦和晦涩的警告中!我建议您使用类似WhereBrowser之类的库,该库将为您提供一个方便的JavaScript对象,其中包含有关os,浏览器,渲染引擎和设备的信息。



0

我已经使用了一段时间了。简单检查即可确定返回的是真还是假是移动设备。

var isMobile = (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Windows Phone/i.test(navigator.userAgent)) ? true : false;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.