Обнаружение iOS
Я не фанат фальсификации User Agent, но вот как вы это сделаете:
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
Другой способ - полагаться на navigator.platform
:
var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
iOS
будет либо true
, либо false
Почему бы не MSStream
Microsoft ввела слово iPhone в IE11 userAgent
чтобы попытаться обмануть Gmail.Поэтому мы должны исключить это.Подробнее об этом здесь и здесь .
Ниже обновлено IE11 userAgent
(Internet Explorer для Windows Phone 8.1 Update):
Mozilla / 5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0); Сенсорный; rv: 11,0; IEMobile / 11,0; NOKIA; Lumia 930), как iPhone OS 7_0_3 Mac OS X AppleWebKit / 537 (KHTML, как Gecko) Mobile Safari / 537
Легко добавитьбольше устройств без использования регулярных выражений:
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()
будет true
или false
Примечание: Оба navigator.userAgent
и navigator.platform
может быть подделано пользователем или расширением браузера.
Определение версии iOS
Наиболее распространенный способ определения версии iOS - анализ ее у пользователяСтрока агента .Но есть также функция обнаружение логический вывод *;
Мы знаем, что history API
был представлен в iOS4 - matchMedia API
в iOS5 - webAudio API
в iOS6 -WebSpeech API
в iOS7 и т. Д. *
Примечание: Следующий код не является надежным и будет работать, если какая-либо из этих функций HTML5 устарела в более новой версииверсия для iOSВы были предупреждены!
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';
}