如何使用 jQuery 检测特定的 iOS 版本?

10
为了让映射链接像往常一样打开地图应用程序,我想根据用户使用的操作系统(iOS 4、5、Android等)不同而呈现不同的链接。
例如:--如果用户使用 iOS 6.0或更高版本,则显示http://maps.apple.com?q="地址",如果是其他操作系统,则显示http://maps.google.com?q="地址"。
注意:我发现您也可以直接调用地图应用程序而不是通过网页链接(现在没有方便的方式),但这无法解决问题,因为那些使用Android或较低版本的iOS的人将无法使用它。

也许这会有所帮助:https://dev59.com/G2sy5IYBdhLWcg3wvgn7 - David Hellsing
那个链接里的信息完全解决了问题。谢谢! - Shawn Taylor
4个回答

16
您可以使用navigator.userAgent字符串来检测iOS版本。例如:
if(/(iPhone|iPad|iPod)\sOS\s6/.test(navigator.userAgent)) {
    // use apple maps
}
请注意,这绝对不是未来的保证,用户代理字符串可能会发生变化,操作系统也可能会更改。另外据我所知,通过浏览器使用Google地图在所有平台上都可用,包括iOS 6。

请注意,这绝对不是未来的保证,用户代理字符串可能会发生变化,操作系统也可能会更改。另外据我所知,通过浏览器使用Google地图在所有平台上都可用,包括iOS 6。


谢谢David。你上面发布的链接不太优雅,但似乎更具有未来性,所以我选择了它。谢谢! - Shawn Taylor

7

下面是用JS确定iOS和Android操作系统版本的代码。不需要jQuery。

已使用实际用户代理字符串测试过iOS 4.3到6.0.1和Android 2.3.4到4.2。

var userOS;    // will either be iOS, Android or unknown
var userOSver; // this is a string, use Number(userOSver) to convert

function getOS( )
{
  var ua = navigator.userAgent;
  var uaindex;

  // determine OS
  if ( ua.match(/iPad/i) || ua.match(/iPod/i) || ua.match(/iPhone/i) )
  {
    userOS = 'iOS';
    uaindex = ua.indexOf( 'OS ' );
  }
  else if ( ua.match(/Android/i) )
  {
    userOS = 'Android';
    uaindex = ua.indexOf( 'Android ' );
  }
  else
  {
    userOS = 'unknown';
  }

  // determine version
  if ( userOS === 'iOS'  &&  uaindex > -1 )
  {
    userOSver = ua.substr( uaindex + 3, 3 ).replace( '_', '.' );
  }
  else if ( userOS === 'Android'  &&  uaindex > -1 )
  {
    userOSver = ua.substr( uaindex + 8, 3 );
  }
  else
  {
    userOSver = 'unknown';
  }
}

如果要检测特定版本及以上版本,请尝试以下操作:

if ( userOS === 'iOS' && Number( userOSver.charAt(0) ) >= 5 ) { ... }

2
您需要查看用户代理字符串。Safari浏览器有一种报告正在使用的设备(iPad,iPhone等)和版本号的方法,因此只需在该紧凑字符串中indexOf信息即可。

http://developer.apple.com/library/IOS/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3

一些其他有用/非常相关的Stackoverflow问题:

使用JavaScript检测小于5的iOS版本

检测网页上的iOS版本

使用PHP或JavaScript检查iOS版本是否为3.0或更高版本


1
使用JavaScript查看用户代理标头。
navigator.userAgent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接