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

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

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属性来获取useragentstring,parsing它,并检测操作系统。

这是你如何做到这一点的一个例子。

更新:

由于这个问题的普及,我想我会添加一些额外的信息给我的答案。

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

  1. 在几乎所有人们转而使用浏览器嗅探的情况下, 特征检测将是更好的select 。 根据用户可能使用的操作系统/浏览器的不同,很less有边界情况可能适用,但大多数情况下,使用像Modernizr这样的库来检测对特定function的支持是更好的方法。 试图使您的网站/应用程序适应特定的浏览器,而不是他们所支持的function是一个滑坡。 相反,请检查浏览器是否支持所需的function,并在缺乏支持时填充或提供良好的回退。
  2. 浏览器嗅探非常复杂 。 为什么? 因为几乎每个浏览器都在他们的用户代理string中,或​​者缺乏足够的信息来允许某个标识。

就这点而言,如果你确实需要使用浏览器/操作系统检测,那么不要重新发明轮子,也不要试图自己动手 – 你将会陷入一个痛苦和晦涩难懂的世界! 我build议你使用像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;