Определение версии iOS на веб-странице
Есть ли способ (с помощью Javascript, PHP и т. Д.) Определить версию страницы iOS, когда страница посещается в MobileSafari?
7 ответов
Вот немного JS для определения версии iOS и Android OS.
Протестировано с фактическими строками пользовательских агентов для 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 ) { ... }
Вы должны быть в состоянии проанализировать строку UserAgent для этого.
Вот пример Строка User Agent, которая объявляет ОС как 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
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/
Вы должны не только определить, является ли оно устройством iOS, но и работать ли оно хотя бы на iOS 2.0. Потому что начиная с 2.0 поддерживаются мультитач и другие важные функции. Ссылка на функции находится в Википедии.
Вам придется допросить $_SERVER['HTTP_USER_AGENT']
значение в PHP (или его эквивалент в JavaScript) и проанализировать его. Я хотел бы создать вспомогательный метод, который анализирует и декодирует пользовательский агент и возвращает iOS-устройство и версию, которая посещает ваш сайт / приложение.
Справочный материал, который вам нужен, находится на сайте Apple. Взгляните на раздел "Использование строки пользовательского агента Safari".
Вы действительно будете проверять версию браузера, которая может сказать вам, что поддерживается или нет. Здесь есть статья, которая дает некоторую приличную информацию о том, как обнаружить это и определить, что он поддерживает.
http://www.mobilexweb.com/blog/iphone4-ios4-detection-safari-viewport