48 votes

Détecter la version iOS inférieure à 5 avec JavaScript

Ceci est lié au "correctif" de la position : corrigé dans les anciennes versions d'iOS. Cependant, si iOS5 ou supérieur est installé, le correctif casse la page.

Je sais comment détecter iOS 5 : navigator.userAgent.match(/OS 5_\d like Mac OS X/i) mais cela ne fonctionnera pas pour iOS6 quand il arrivera finalement, ou même iOS 5.0.1, uniquement une version à 2 chiffres.

C'est donc ce que j'ai au guichet automatique.

 $(document).bind("scroll", function() {
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
        if (navigator.userAgent.match(/OS 5_\d like Mac OS X/i)) {
    }
    else {
        changeFooterPosition();
    }
});

137voto

Peter T Bosse II Points 416

Cet extrait de code peut être utilisé pour déterminer n'importe quelle version d'iOS 2.0 et versions ultérieures.

 function iOSversion() {
  if (/iP(hone|od|ad)/.test(navigator.platform)) {
    // supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
  }
}

ver = iOSversion();

if (ver[0] >= 5) {
  alert('This is running iOS 5 or later.');
}

4voto

Charlie S Points 1321

Ajout à la réponse de Pumbaa80. La chaîne de version peut être 4_0 , 5_0_1 , 4_0_4 , etc., et ainsi tester contre [1-4]_/d (un seul trait de soulignement et numéro) n'est pas adéquat. Le JavaScript ci-dessous fonctionne pour moi pour diverses sous-versions d'iOS 3-5 :

 if (/(iPhone|iPod|iPad)/i.test(navigator.userAgent)) {
    if (/OS [1-4](.*) like Mac OS X/i.test(navigator.userAgent)) {
      // iOS version is <= 4.
    } else {
      // iOS version is > 4.
    }
  }

4voto

Jim Bergman Points 954

Voici un peu de JS pour déterminer la version du système d'exploitation iOS et Android.

Testé avec des chaînes d'agent utilisateur réelles pour iOS 4.3 à 6.0.1 et 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';
  }
}

Ensuite, pour détecter une version spécifique et supérieure, essayez :

 if ( userOS === 'iOS' && Number( userOSver.charAt(0) ) >= 5 ) { ... }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X