Frage

Dies hängt mit dem "Fix" für Position zusammen: in älteren Versionen von iOS festgelegt. Wenn jedoch iOS5 oder mehr installiert ist, bricht die Fix die Seite.

Ich weiss wie um iOS 5 zu erkennen: navigator.userAgent.match(/OS 5_\d like Mac OS X/i) Aber das funktioniert nicht für iOS6, wenn es irgendwann vorbeikommt, oder sogar iOS 5.0.1, nur eine 2 -stellige Version.

Das habe ich also Geldautomaten.

$(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();
    }
});
War es hilfreich?

Lösung

Dieser Codeausschnitt kann verwendet werden, um jede Version von iOS 2.0 und später zu bestimmen.

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

Andere Tipps

Die Antwort von Pumbaa80 betrug fast 100%, er hat gerade einen Teil ausgelassen. Einige iOS -Veröffentlichungen haben eine dritte Ziffer.

Beispiel

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

Das folgen erlaubt das

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

Das zusätzliche Bit (_ d)? Ermöglicht die Möglichkeit einer dritten Ziffer in der Versionsnummer. Charlie S, das sollte auch Ihre Frage beantworten.

Beachten Sie die sonst, da die 1. Scheck nicht auf iOS 1. iOS 1 für das iPhone und iPod funktioniert, enthielt keine Versionsnummer in seine Benutzeragent -Zeichenfolge.

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

All dies finden Sie unter dem folgenden Link auf Apfelwebsite hier.

Hinzufügen der Antwort von Pumbaa80. Die Versionszeichenfolge könnte sein 4_0, 5_0_1, 4_0_4, usw. und so testen dagegen [1-4]_/d (Ein einzelner Unterstrich und die Zahl) ist nicht angemessen. Das folgende JavaScript funktioniert für mich für verschiedene Unterversionen von 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.
    }
  }

Erstens: Verwenden Sie nicht match Wenn ein test reicht.

Zweitens: Sie sollten umgekehrt rund testen. Finden Sie die UAS, die als gebrochen bekannt sind.

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

Hier ist ein bisschen JS, um die iOS- und Android -OS -Version zu bestimmen.

Getestet mit den tatsächlichen Benutzeragenten für iOS 4.3 bis 6.0.1 und Android 2.3.4 bis 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';
  }
}

Versuchen Sie dann, um eine bestimmte Version und höher zu erkennen:

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

Ich konnte nicht wirklich finden, wonach ich suchte, also nahm ich Ideen von dieser Seite und auf anderen Seiten rund um das Netz und habe das ausgedacht. Hoffentlich werden andere es auch nützlich finden.

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

Sie können die Hauptveröffentlichung und die vollständige Versionsnummer entweder als Zeichenfolge oder als Nummer für iOS erhalten.

Beispiel User Agent String:

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

Verwendungszweck:

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

Bei der ursprünglichen Frage auf dieser Seite können Sie diesen Code auf folgende Weise verwenden:

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

Führen Sie diesen Code einfach in Gerät/Browser aus

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

Diese iPhone_version -Variable bietet Ihnen die korrekte Betriebssystemversion für jedes iPhone -Gerät.

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

Dadurch gibt ein Array mit den einzelnen Versionsnummern wie zurück [10,0,1] für v10.0.1 oder es wird standardmäßig zu [0] Andernfalls. Sie können die erste Ziffer (die Hauptversion) oder alle von ihnen überprüfen, um die von Ihnen benötigten Versionen zu testen.

Nehmen Sie die Versionsnummer ("5") weiter an und fügen Sie dann eine Bedingung hinzu, wobei die Anzahl größer als / weniger als die Versionsnummer ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top