【问题标题】:How can I detect specific iOS version with jquery?如何使用 jquery 检测特定的 iOS 版本?
【发布时间】:2012-10-28 03:15:57
【问题描述】:

为了让地图链接像以前一样打开地图应用程序,我想根据用户使用的是 iOS 6 还是其他(iOS 4、5、Android 等)显示不同的链接。

类似: -- 如果在 iOS 6.0 或更高版本上,则显示 http://maps.apple.com?q="address",如果是其他版本,则显示 http://maps.google.com?q="address"。

注意:我知道您也可以直接调用地图应用程序,而不是通过网络链接(现在不方便),但这不能解决问题,因为有人在 Android 或更低版本的 iOS 上将没有任何用处。

【问题讨论】:

标签: javascript google-maps ios6 ios6-maps


【解决方案1】:

您想查看用户代理字符串。 Safari 网络浏览器有一种方法可以报告正在使用的设备(iPad、iPhone 等)以及版本号,因此它与那个紧凑的小字符串中的信息的索引有关。

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

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

Detect iOS version less than 5 with JavaScript

Detecting iOS Version on a Web Page

Check if iOS version is 3.0 or higher with PHP or Javascript

【讨论】:

    【解决方案2】:

    您可以使用navigator.userAgentstring 检测 iOS 版本。比如:

    if(/(iPhone|iPad|iPod)\sOS\s6/.test(navigator.userAgent)) {
        // use apple maps
    }
    

    请注意,这绝不是未来的证明,用户代理字符串可以更改,操作系统也会更改。此外,AFAIK,通过浏览器的谷歌地图可在所有平台上使用,包括 iOS 6。

    【讨论】:

    • 谢谢大卫。您在上面发布的链接没有这个那么优雅,但似乎它会更有未来的证明,所以我同意了。谢谢!
    【解决方案3】:

    使用 JavaScript 查看用户代理标头。

    navigator.userAgent
    

    【讨论】:

      【解决方案4】:

      这里有一点 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 ) { ... }
      

      【讨论】:

        猜你喜欢
        • 2021-10-24
        • 1970-01-01
        • 2015-09-05
        • 2011-12-07
        • 1970-01-01
        • 2012-08-19
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        相关资源
        最近更新 更多