Dapatkan Versi IE dari Agen-Pengguna
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
Cara kerjanya: String agen pengguna untuk semua versi IE mencakup bagian " versi ruang MSIE " atau "Trident other-text rv space-or-colon versi ". Mengetahui hal ini, kami mengambil nomor versi dari ekspresi reguler. Sebuah blok digunakan untuk mempersingkat kode, kalau tidak kita akan perlu untuk menguji batas array untuk browser non-IE. String.match()
try-catch
Catatan: Agen-pengguna dapat dipalsukan atau dihilangkan, terkadang tanpa disengaja jika pengguna telah mengatur browser mereka ke "mode kompatibilitas". Meskipun ini sepertinya tidak banyak masalah dalam praktiknya.
Dapatkan Versi IE tanpa Agen-Pengguna
var d = document, w = window;
var ie = ( !!w.MSInputMethodContext ? 11 : !d.all ? 99 : w.atob ? 10 :
d.addEventListener ? 9 : d.querySelector ? 8 : w.XMLHttpRequest ? 7 :
d.compatMode ? 6 : w.attachEvent ? 5 : 1 );
Cara kerjanya: Setiap versi IE menambahkan dukungan untuk fitur tambahan yang tidak ditemukan di versi sebelumnya. Jadi kami dapat menguji fitur-fitur secara top-down. Sebuah ternary urutan digunakan di sini untuk singkatnya, meskipun if-then
dan switch
pernyataan akan bekerja sama dengan baik. Variabel ie
diatur ke integer 5-11, atau 1 untuk yang lebih lama, atau 99 untuk yang lebih baru / non-IE. Anda dapat mengaturnya ke 0 jika Anda hanya ingin menguji IE 1-11 dengan tepat.
Catatan: Deteksi objek dapat rusak jika kode Anda dijalankan pada halaman dengan skrip pihak ketiga yang menambahkan polyfill untuk hal-hal seperti document.addEventListener
. Dalam situasi seperti itu, agen-pengguna adalah pilihan terbaik.
Mendeteksi jika Browser Modern
Jika Anda hanya tertarik pada apakah browser mendukung sebagian besar standar HTML 5 dan CSS 3, Anda dapat mengasumsikan bahwa IE 8 dan yang lebih rendah tetap menjadi aplikasi masalah utama. Pengujian untuk window.getComputedStyle
akan memberi Anda perpaduan yang cukup baik dari browser modern, juga (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). IE 9 sangat meningkatkan dukungan standar, tetapi animasi CSS asli membutuhkan IE 10.
var isModernBrowser = ( !document.all || ( document.all && document.addEventListener ) );