在网页上检测iOS版本

时间:2011-09-27 20:51:19

标签: javascript html ios

当在MobileSafari上访问该页面时,有没有办法(使用Javascript,PHP等)来检测iOS页面的版本?

6 个答案:

答案 0 :(得分:8)

这里有一些用于确定iOS和Android操作系统版本的JS。

使用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(/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 ) { ... }

答案 1 :(得分:4)

您应该能够为它解析UserAgent字符串。

这是一个示例用户代理字符串,用于声明操作系统为4.3.1

Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5

答案 2 :(得分:1)

PHP

function ismobilesafari() {
    if( preg_match( '/(iPod|iPhone|iPad)/', $_SERVER[ 'HTTP_USER_AGENT' ] ) ) {
        return true;
    } else {
        return false;
    }
}

JS

function ismobilesafari() {
    if( navigator.userAgent.match( /(iPod|iPhone|iPad)/ ) ) {
        return true
    } else {
        return false
    }
}

参考:http://alan.edward.es/posts/detecting-the-awesomeness-that-is-mobile-safari/

答案 3 :(得分:0)

您真的会检查浏览器的版本,它可以告诉您支持的内容。这里有一篇文章提供了一些关于如何检测它并确定它支持的信息。

http://www.mobilexweb.com/blog/iphone4-ios4-detection-safari-viewport

答案 4 :(得分:0)

您必须查询PHP中的$_SERVER['HTTP_USER_AGENT']值(或其在JavaScript中的等价物)并解析它。我将构建一个帮助方法来解析和解码用户代理并返回访问您的站点/应用程序的iOS设备和版本。

The reference material you need is online over at Apple。请查看“使用Safari用户代理字符串”部分。

答案 5 :(得分:0)

您不仅应检测其是否为iOS设备,还应检测该设备是否至少在iOS 2.0上运行。因为支持2.0 mulittouch和其他重要功能。维基百科上的功能参考。