Mendeteksi iOS
Saya bukan penggemar Agen Pengguna mengendus, tetapi di sini adalah bagaimana Anda akan melakukannya:
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
Cara lain mengandalkan navigator.platform
:
var iOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
iOS
akan menjadi true
ataufalse
Kenapa tidak MSStream
Microsoft menyuntikkan kata iPhone di IE11 userAgent
untuk mencoba menipu Gmail. Karena itu kita perlu mengecualikannya. Info lebih lanjut tentang ini di sini dan di sini .
Di bawah ini adalah pembaruan IE11 userAgent
( Pembaruan Internet Explorer untuk Windows Phone 8.1):
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) seperti iPhone OS 7_0_3 Mac OS X AppleWebKit / 537 (KHTML, seperti Gecko) Mobile Safari / 537
Menambahkan lebih banyak perangkat dengan mudah, tanpa menggunakan Ekspresi Reguler:
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()
akan menjadi true
ataufalse
Catatan: Keduanya navigator.userAgent
dan navigator.platform
dapat dipalsukan oleh pengguna atau ekstensi browser.
Mendeteksi versi iOS
Cara paling umum untuk mendeteksi versi iOS adalah dengan menguraikannya dari string Agen Pengguna . Tetapi ada juga inferensi deteksi fitur * ;
Kami tahu fakta yang history API
diperkenalkan di iOS4 - matchMedia API
di iOS5 - webAudio API
di iOS6 -WebSpeech API
di iOS7 dan seterusnya ..
Catatan: Kode berikut ini tidak dapat diandalkan dan akan rusak jika salah satu fitur HTML5 ini tidak digunakan dalam versi iOS yang lebih baru. Anda telah diperingatkan!
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';
}