我需要根据用户是在 Android 浏览器还是 iOS 浏览器上查看移动网站上的一些按钮和文本。是否有可靠的方法来执行检查?
问问题
92188 次
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
属性来获取用户代理字符串、解析它并检测操作系统。
这是您如何做到这一点的一个示例。
更新:
由于这个问题很受欢迎,我想我会在我的答案中添加一些额外的信息。
一般来说,浏览器嗅探几乎从来都不是最好的方法。为什么?嗯,有很多原因,但这里有两个很好的原因:
- 在人们转向浏览器嗅探的几乎所有情况下,特征检测都是更好的选择。在极少数情况下,根据用户可能使用的操作系统/浏览器采取行动可能是合适的,但在大多数情况下,使用像Modernizr这样的库来检测对特定功能的支持是一种更好的方法。试图使您的站点/应用程序适应特定的浏览器而不是它们支持的功能是一个滑坡。相反,请检查浏览器是否支持您需要的功能,并在缺少支持时使用 polyfill 或提供不错的回退。
- 浏览器嗅探极其复杂。为什么?因为几乎每个浏览器都位于它们的用户代理字符串中,或者缺少足够的信息来进行特定的识别。
话虽如此,如果你真的需要使用浏览器/操作系统检测,那么不要重新发明轮子,也不要试图自己去做——你将进入一个痛苦和晦涩的警告世界!我建议你使用像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 回答