Как я могу определить конкретную версию iOS с помощью jquery?

Чтобы ссылки на карты открывали приложение карт, как это было раньше, я хочу представить другую ссылку в зависимости от того, работает ли пользователь на iOS 6 или на другом (iOS 4, 5, Android и т. Д.).

Что-то вроде: - если на iOS 6.0 или выше, показать http://maps.apple.com/?q="адрес", если другой, показать http://maps.google.com/?q="адрес".

ПРИМЕЧАНИЕ. Я понимаю, что вы также можете вызывать приложение карт напрямую, а не через веб-ссылку (сейчас это не удобно), но это не решит проблему, так как кто-то на Android или более поздней iOS не получит никакой пользы от тот.

4 ответа

Решение

Вы можете определить версию iOS, используя navigator.userAgentстрока. Что-то вроде:

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

Обратите внимание, что это никоим образом не является перспективой, строки агента пользователя могут измениться, как и ОС. Также AFAIK, Google Maps через браузер доступен на всех платформах, включая iOS 6.

Вот немного JS для определения версии iOS и Android OS. Не требуется 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 ) { ... }

Вы хотите посмотреть на строку агента пользователя. В веб-браузере Safari есть способ сообщить, какое устройство (iPad, iPhone и т. Д.) Используется, а также номер версии, так что это вопрос индекса информации в этой компактной строчке.

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

Некоторые другие полезные / очень связанные вопросы Stackru:

Определить версию iOS менее 5 с помощью JavaScript

Определение версии iOS на веб-странице

Проверьте версию iOS 3.0 или выше с PHP или Javascript

Используйте JavaScript для просмотра заголовка пользовательского агента.

navigator.userAgent
Другие вопросы по тегам