Domanda

Questo è legato al "fix" per la posizione: fissa nelle versioni precedenti di iOS. Tuttavia, se è installato iOS5 o superiore, le interruzioni di fissare la pagina.

So come per rilevare iOS 5:. navigator.userAgent.match(/OS 5_\d like Mac OS X/i) ma che non funziona per iOS6 quando finalmente viene intorno, o addirittura iOS 5.0.1, solo una versione a 2 cifre

Quindi questo è quello che ho 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();
    }
});
È stato utile?

Soluzione

Questo frammento di codice può essere utilizzato per determinare qualsiasi versione di iOS 2.0 e versioni successive.

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.');
}

Altri suggerimenti

Risposta di Pumbaa80 era quasi al 100%, ha appena lasciato fuori una parte. Alcuni iOS rilasciare una terza cifra su di loro.

Esempio

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

Il follow consente che

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
    }
}

che extra po '(_ \ d)? prevede la possibilità di una terza cifra del numero di versione. Charlie S, che dovrebbe rispondere alla tua domanda troppo.

Si noti l'altro, perché il primo controllo non funziona su iOS 1. iOS 1 per iPhone e iPod non hanno incluso un numero di versione nel suo stringa 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

Tutto questo si può trovare al seguente link su sito Mele qui .

L'aggiunta alla risposta di Pumbaa80. La stringa di versione potrebbe essere 4_0, 5_0_1, 4_0_4, ecc, e così prova contro [1-4]_/d (una singola sottolineatura e numero) non è adeguata. Il codice JavaScript sotto sta lavorando per me per vari sotto-versioni di 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.
    }
  }

In primo luogo:. Non usare match quando un test è sufficiente

Secondo: Si dovrebbe provare il contrario. Trova le scuole universitarie professionali che sono noti per essere rotto.

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

Ecco un po 'di JS per determinare iOS e Android OS versione.

Testato con effettivi stringhe user agent per iOS 4.3 a 6.0.1 e Android 2.3.4 a 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';
  }
}

Poi per rilevare una versione specifica e superiore, provare:

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

non ho potuto davvero trovare quello che stavo cercando, così ho preso idee da questa pagina e altre pagine giro per la rete e si avvicinò con questo. Speriamo che gli altri lo troveranno utile pure.

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);
    }
}

Permette di ottenere il rilascio principale e il numero di rilascio completo o come una stringa o come numero per iOS.

Esempio Stringa agente utente:

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

Utilizzo:

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

Nel caso della domanda originale in questa pagina, è possibile utilizzare questo codice nel seguente modo:

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

Basta semplicemente eseguire questo codice nel dispositivo / navigatore

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!');
    }
}

Questa variabile iphone_version vi darà corretta versione del sistema operativo per qualsiasi dispositivo 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];
}

Ciò restituirà un array con i singoli numeri di versione come [10,0,1] per v10.0.1, o che sarà default [0] altrimenti. È possibile controllare la prima cifra (la versione principale) oppure a tutti loro di prova per le versioni si ha bisogno.

Ulteriori analizzare fuori il numero di versione ( "5"), quindi aggiungere una condizione in cui se il numero è maggiore / minore numero di versione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top