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

IT技术 javascript jquery html browser
2021-03-03 23:57:36

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

4个回答
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 手机和平板电脑将被识别为移动设备,因此平板电脑最终会显示手机视图。
2021-05-04 23:57:36
@Anoop 应该更新他的答案并首先使用 Windows Phone 来解决 andrino 之前评论中提到的错误。
2021-05-07 23:57:36
平台的顺序应该随着 Windows Phone 的出现而改变。 由于许多网站确实使用这种操作系统检测,但忽略了 Windows Phone,因此微软决定将“Android”和“iPhone”也放入 userAgent 字符串中。我在我的网站上使用了这个答案,但我的 Lumia 1520 总是被识别为 android 设备。因此,在测试 Android 和 iOS 之前,您应该测试“IEMobile”。
2021-05-09 23:57:36
在我的 iPad mini 上,iOS 功能在 safari 中有效,但在使用谷歌浏览器时无效。在我的 iPhone 5 上,它可以在 safari 和 chrome 中使用。编辑:我在 iPhone 上有 iOS 7,在 iPad 上有 iOS6
2021-05-13 23:57:36
对于想要在此处报告损坏的未来用户,请包含用户代理字符串。
2021-05-14 23:57:36

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

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

更新:

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

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

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

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

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

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

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