Détection d'iOS
Je ne suis pas un fan de reniflement d'agent utilisateur, mais voici comment vous le feriez:
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
Une autre façon repose sur navigator.platform:
var iOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
iOSsera soit trueoufalse
Pourquoi pas MSStream
Microsoft a injecté le mot iPhone dans IE11 userAgentafin d'essayer de tromper Gmail d'une manière ou d'une autre. Nous devons donc l'exclure. Plus d'informations ici et ici .
Ci-dessous, la mise à jour d'IE11 userAgent(Internet Explorer pour Windows Phone 8.1 Update):
Mozilla / 5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0; Touch; rv: 11.0; IEMobile / 11.0; NOKIA; Lumia 930) comme iPhone OS 7_0_3 Mac OS X AppleWebKit / 537 (KHTML, comme Gecko) Safari mobile / 537
Ajoutez facilement plus d'appareils, sans utiliser d'expressions régulières:
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()sera soit trueoufalse
Remarque: Les deux navigator.userAgentet navigator.platformpeuvent être falsifiés par l'utilisateur ou une extension de navigateur.
Détection de la version iOS
La façon la plus courante de détecter la version iOS consiste à l' analyser à partir de la chaîne de l'agent utilisateur . Mais il existe également une inférence de détection de fonctionnalité * ;
Nous savons pour un fait qui a history APIété introduit dans iOS4 - matchMedia APIdans iOS5 - webAudio APIdans iOS6 - WebSpeech APIdans iOS7 et ainsi de suite ..
Remarque: Le code suivant n'est pas fiable et se cassera si l'une de ces fonctionnalités HTML5 est déconseillée dans une version iOS plus récente. Tu étais prévenu!
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';
}