IOS erkennen
Ich bin kein Fan von User Agent-Schnüffeln, aber hier ist, wie Sie es tun würden:
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
Ein anderer Weg ist, sich auf Folgendes zu verlassen navigator.platform
:
var iOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
iOS
wird entweder true
oder seinfalse
Warum nicht MSStream?
Microsoft hat das Wort iPhone in IE11s eingefügt, userAgent
um Google Mail irgendwie zu täuschen. Deshalb müssen wir es ausschließen. Mehr Infos dazu hier und hier .
Unten ist IE11 aktualisiert userAgent
(Internet Explorer für Windows Phone 8.1 Update):
Mozilla / 5.0 (Mobil; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0; Touch; RV: 11.0; IEMobile / 11.0; NOKIA; Lumia 930) wie iPhone OS 7_0_3 Mac OS X AppleWebKit / 537 (KHTML, wie Gecko) Mobile Safari / 537
Fügen Sie einfach weitere Geräte hinzu, ohne reguläre Ausdrücke zu verwenden:
function iOS() {
var iDevices = [
'iPad Simulator',
'iPhone Simulator',
'iPod Simulator',
'iPad',
'iPhone',
'iPod'
];
if (navigator.platform) {
while (iDevices.length) {
if (navigator.platform === iDevices.pop()){ return true; }
}
}
return false;
}
iOS()
wird entweder true
oder seinfalse
Hinweis: Beide navigator.userAgent
und navigator.platform
können vom Benutzer oder einer Browser-Erweiterung gefälscht werden.
IOS-Version erkennen
Die häufigste Methode zum Erkennen der iOS-Version besteht darin, sie aus der User Agent-Zeichenfolge zu analysieren . Aber es gibt auch Feature Erkennung Inferenz * ;
Wir wissen für eine Tatsache, history API
die in iOS4 eingeführt wurde - matchMedia API
in iOS5 - webAudio API
in iOS6 - WebSpeech API
in iOS7 und so weiter.
Hinweis: Der folgende Code ist nicht zuverlässig und funktioniert nicht, wenn eine dieser HTML5-Funktionen in einer neueren iOS-Version veraltet ist. Du wurdest gewarnt!
function iOSversion() {
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
if (window.indexedDB) { return 'iOS 8 and up'; }
if (window.SpeechSynthesisUtterance) { return 'iOS 7'; }
if (window.webkitAudioContext) { return 'iOS 6'; }
if (window.matchMedia) { return 'iOS 5'; }
if (window.history && 'pushState' in window.history) { return 'iOS 4'; }
return 'iOS 3 or earlier';
}
return 'Not an iOS device';
}