有没有办法(使用Javascript、PHP等)在MobileSafari上访问页面时检测iOS页面的版本?
有没有办法(使用Javascript、PHP等)在MobileSafari上访问页面时检测iOS页面的版本?
这里有一段JS代码,用于确定iOS和Android操作系统的版本。
已经使用实际的用户代理字符串测试了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 ) { ... }
checkIfiOS8: function() {
if((/iphone|ipod|ipad/gi).test(navigator.platform)) {
var versionString = navigator.appVersion.substr(navigator.appVersion.indexOf(' OS ')+4);
versionString = versionString.substr(0, versionString.indexOf(' '));
versionString = versionString.replace(/_/g, '.');
return true;
}
return false;
}
- klogd你应该能够解析UserAgent字符串。
这是一个声明操作系统为4.3.1的示例User Agent字符串。
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
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/
function isIos() {
const userAgent = window.navigator.userAgent.toLowerCase();
return /iphone|ipad|ipod/.test(userAgent);
}
function getIphoneOSVersion() {
let osVersion: any = 'Unknown';
if (!isIos()) {
return osVersion;
}
osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(window.navigator.userAgent);
osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0);
osVersion = osVersion.replaceAll('_', '.');
return osVersion;
}
您可以检查浏览器版本,以了解其支持哪些功能。这里有一篇文章提供了如何检测并确定浏览器所支持的功能的相关信息。
http://www.mobilexweb.com/blog/iphone4-ios4-detection-safari-viewport
你需要在PHP中(或JavaScript中的等效方式)询问$_SERVER['HTTP_USER_AGENT']
值并解析它。我会建立一个帮助方法来解析和解码用户代理,并返回访问您的站点/应用程序的iOS设备和版本。
你需要的参考资料可以在苹果公司的网站上找到。请查看“使用Safari用户代理字符串”部分。
你不仅应该检测设备是否为iOS设备,还应该检测设备是否运行至少iOS 2.0。因为自从2.0版本以来,支持多点触控和其他重要功能。特性的参考可以在维基百科上找到。