我需要更改移动网站上的一些按钮和文本,具体取决于用户是在 Android 还是 iOS 浏览器上查看。有没有可靠的方法来执行检查?
检测浏览器是否在 Android 或 iOS 设备上运行
IT技术
javascript
jquery
html
browser
2021-03-03 23:57:36
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());
}
};
我将使用该navigator.useragent
属性来获取用户代理字符串、解析它并检测操作系统。
更新:
由于这个问题的流行,我想我会在我的答案中添加一些额外的信息。
一般来说,浏览器嗅探几乎从来都不是最好的方法。为什么?嗯,有很多原因,但这里有两个很好的原因:
- 在人们转向浏览器嗅探的几乎所有情况下,特征检测将是更好的选择。在极少数情况下,根据用户可能使用的操作系统/浏览器采取行动可能是合适的,但在大多数情况下,使用像Modernizr这样的库来检测对特定功能的支持是更好的方法。尝试使您的站点/应用程序适应特定浏览器而不是它们支持的功能是一种滑坡。而是检查浏览器是否支持您需要的功能,并在缺乏支持时填充或提供不错的回退。
- 浏览器嗅探极其复杂。为什么?因为几乎每个浏览器都存在于它们的用户代理字符串中或缺乏足够的信息来允许进行某种识别。
话虽如此,如果您真的真的需要使用浏览器/操作系统检测,那么不要重新发明轮子,也不要尝试自己做 - 您将进入一个充满痛苦和模糊警告的世界!我建议您使用像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;