Question

Ceci est lié à la « solution » pour la position: fixe dans les anciennes versions d'iOS. Toutefois, si iOS5 ou plus est installé, les pauses fix la page.

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

Voilà donc ce que je atm.

$(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();
    }
});
Était-ce utile?

La solution

Cet extrait de code peut être utilisé pour déterminer une 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.');
}

Autres conseils

Réponse de Pumbaa80 était presque 100%, il vient de quitter sur une partie. Certains iOS libérer un troisième chiffre sur eux.

Exemple

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en_us) AppleWebKit/525.18.1 (KHTML, like Gecko)

Le suivi permet que

if(/(iPhone|iPod|iPad)/i.test(navigator.userAgent)) { 
    if(/OS [2-4]_\d(_\d)? like Mac OS X/i.test(navigator.userAgent)) {  
        // iOS 2-4 so Do Something   
    } else if(/CPU like Mac OS X/i.test(navigator.userAgent)) {
        // iOS 1 so Do Something 
    } else {
        // iOS 5 or Newer so Do Nothing
    }
}

Ce bit supplémentaire (_ \ d)? permet la possibilité d'un troisième chiffre du numéro de version. Charlie S, qui devrait répondre à votre question aussi.

Notez l'autre parce que le 1er chèque ne fonctionnera pas sur iOS 1. iOS 1 pour l'iPhone et l'iPod ne comprend pas un numéro de version dans sa chaîne UserAgent.

iPhone v 1.0

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3

iPod v1.1.3

Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3

Tout cela se trouve sur le lien suivant sur site Apples .

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 le nombre) ne suffit pas. Le code JavaScript ci-dessous travaille pour moi pour différentes 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.
    }
  }

Tout d'abord:. Ne pas utiliser match lorsqu'un test est assez

Deuxième: Vous devriez tester l'autre sens. Trouvez les UAs qui sont connus pour être brisés.

if(/(iPhone|iPod|iPad)/i.test(navigator.userAgent)) {
    if (/OS [1-4]_\d like Mac OS X/i.test(navigator.userAgent)) {
        changeFooterPosition();
...

Voici un peu de JS pour déterminer la version iOS et Android OS.

Testé avec les chaînes de l'agent utilisateur réel pour iOS 4.3 à 6.0.1, et 2.3.4 les applications à 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 plus, essayez:

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

Je ne pouvais pas vraiment trouver ce que je cherchais, alors j'ai pris des idées de cette page et d'autres pages sur le net et est venu avec cela. Espérons que d'autres trouveront utiles.

function iOS_version() { 
    if(navigator.userAgent.match(/ipad|iphone|ipod/i)){ //if the current device is an iDevice
    var ios_info ={};
    ios_info.User_Agent=navigator.userAgent;
    ios_info.As_Reported=(navigator.userAgent).match(/OS (\d)?\d_\d(_\d)?/i)[0];
    ios_info.Major_Release=(navigator.userAgent).match(/OS (\d)?\d_\d(_\d)?/i)[0].split('_')[0];
    ios_info.Full_Release=(navigator.userAgent).match(/OS (\d)?\d_\d(_\d)?/i)[0].replace(/_/g,".");
    ios_info.Major_Release_Numeric=+(navigator.userAgent).match(/OS (\d)?\d_\d(_\d)?/i)[0].split('_')[0].replace("OS ","");
    ios_info.Full_Release_Numeric=+(navigator.userAgent).match(/OS (\d)?\d_\d(_\d)?/i)[0].replace("_",".").replace("_","").replace("OS ","");   //converts versions like 4.3.3 to numeric value 4.33 for ease of numeric comparisons
    return(ios_info);
    }
}

Il vous permet d'obtenir la version majeure et le numéro de version complète, soit sous forme de chaîne ou un numéro pour iOS.

Agent Exemple utilisateur Chaîne:

    Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329

Utilisation:

var iOS=iOS_version();
console.log(iOS.Full_Release); //returns values in form of "OS 6.1.3"
console.log(iOS.Full_Release_Numeric); //returns values in form of 6.13
//useful for comparisons like if(iOS.Full_Release_Numeric >6.2)

console.log(iOS.Major_Release); //returns values in form of "OS 6"
console.log(iOS.Major_Release_Numeric); //returns values in form of 6
//useful for comparisons like if(iOS.Major_Release_Numeric >7)

console.log(iOS.As_Reported); //returns values in form of "OS 6_1_3"
console.log(iOS.User_Agent); //returns the full user agent string

Dans le cas de la question initiale sur cette page, vous pouvez utiliser ce code de la manière suivante:

var iOS=iOS_version();
$(document).bind("scroll", function() {
    if(iOS){if(iOS.Major_Release_Numeric <5) {} 
    else {changeFooterPosition();}
    }
});   

Il suffit simplement d'exécuter ce code dans le périphérique / navigateur

if(window.navigator.userAgent.match( /iP(hone|od|ad)/)){

    var iphone_version= parseFloat(String(window.navigator.userAgent.match(/[0-9]_[0-9]/)).split('_')[0]+'.'+String(window.navigator.userAgent.match(/[0-9]_[0-9]/)).split('_')[1]);

    // iPhone CPU iPhone OS 8_4 like Mac OS X

    alert(iphone_version); // its alert 8.4

    if(iphone_version >= 8){
       alert('iPhone device, iOS 8 version or greater!');
    }
}

Cette variable iphone_version vous donnera la version correcte du système d'exploitation pour tout appareil iPhone.

function getIOSVersion() {
    const ua = navigator.userAgent;
    if (/(iPhone|iPod|iPad)/i.test(ua)) {
        return ua.match(/OS [\d_]+/i)[0].substr(3).split('_').map(n => parseInt(n));
    }
    return [0];
}

retourne un tableau avec les numéros de version individuels comme [10,0,1] pour v10.0.1, ou il va par défaut [0] autrement. Vous pouvez vérifier le premier chiffre (la version majeure) ou tous pour tester les versions dont vous avez besoin.

En outre parse le numéro de version ( "5"), puis ajouter une condition où si le nombre est supérieur à / inférieur numéro de version.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top