Ketika saya ingin mendeteksi IE saya menggunakan kode ini:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Tetapi IE11 mengembalikan "Anda tidak menggunakan Internet Explorer". Bagaimana saya bisa mendeteksinya?
internet-explorer
debugging
internet-explorer-11
browser-detection
forward-compatibility
Paul Sweatte
sumber
sumber
Jawaban:
IE11 tidak lagi melaporkan sebagai
MSIE
, menurut daftar perubahan ini sengaja untuk menghindari salah deteksi.Apa yang dapat Anda lakukan jika Anda benar - benar ingin tahu itu adalah untuk mendeteksi
Trident/
string di agen pengguna jikanavigator.appName
kembaliNetscape
, sesuatu seperti (yang belum diuji);Perhatikan bahwa IE11 (afaik) masih dalam pratinjau, dan agen pengguna dapat berubah sebelum rilis.
sumber
it's intentional to avoid mis-detection
- Sayangnya, sekarang bahwa IE11 dilepaskan, kita memiliki kode yang rusak di hanya IE11, sedangkan deteksi benar IE akan bekerja ...function isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); }
var isIE11 = !!navigator.userAgent.match(/Trident\/7\./);
sourceGunakan
!(window.ActiveXObject) && "ActiveXObject" in window
untuk mendeteksi IE11 secara eksplisit.Untuk mendeteksi versi IE (pra-Edge, "Trident"), gunakan
"ActiveXObject" in window
.sumber
window.ActiveXObject
, seperti yang dijelaskan dalam artikel, kembaliundefined
di IE11 sekarang (dan juga browser non-Microsoft.) Pengujian menggunakanin
operator javascript kembalitrue
di semua browser Microsoft, jadi keduanya adalah kasus ketat di IE11. Jika Microsoft mengeluarkan perubahan pada perilakuin
operator, ya, metode ini akan rusak.Gunakan
MSInputMethodContext
sebagai bagian dari pemeriksaan deteksi fitur. Sebagai contoh:Referensi
sumber
#false
di non-IE, IE8,9,10, Edge 14,15.#true
hanya di IE11. Tidak menguji dengan mode dokumen aktif. Diuji dengan Browserstack.Saya sudah membaca jawaban Anda dan membuat campuran. Tampaknya berfungsi dengan Windows XP (IE7 / IE8) dan Windows 7 (IE9 / IE10 / IE11).
Tentu saja jika saya mengembalikan 0, berarti tidak ada IE.
sumber
Dapatkan Versi IE dari Agen-Pengguna
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
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
danswitch
pernyataan akan bekerja sama dengan baik. Variabelie
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.sumber
var ie = 0; try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; } catch(e){} if (ie !== 0) { location.href = "../ie-redirect/redirect.html"; }
Angular JS melakukan cara ini.
msie akan menjadi angka positif jika IE dan NaN untuk browser lain seperti chrome, firefox.
kenapa
Pada Internet Explorer 11, string agen-pengguna telah berubah secara signifikan.
lihat ini:
msdn # 1 msdn # 2
sumber
solusi:
sumber
This is IE 0
Saya menggunakan metode yang lebih sederhana:
Objek global navigator memiliki titik sentuh properti, di Internet Exlorer 11 disebut msMaxTouchPoints tho.
Jadi jika Anda mencari:
Anda akan menemukan Internet Explorer 11.
sumber
sumber
Coba ini:
sumber
!navigator.userAgent.match("Acoo Browser;") && navigator.userAgent.match(/MSIE/i) ? true : false
tetapi itu tidak selalu berhasil karena browser acoo tidak selalu memiliki "Acoo Browser;" dalam agen pengguna tetapi sebenarnya Anda tidak perlu peduli bahwa browser acoo memiliki "MSIE" di agen pengguna karena browser acoo hampir sama.Ini tampaknya menjadi metode yang lebih baik. "indexOf" mengembalikan -1 jika tidak ada yang cocok. Itu tidak menimpa kelas yang ada pada tubuh, hanya menambahkannya.
sumber
Deteksi sebagian besar browser dengan ini:
https://gist.github.com/earlonrails/5266945
sumber
Saya menggunakan
onscroll
acara di elemen dengan scrollbar. Ketika dipicu di IE, saya menambahkan validasi berikut:sumber
Hanya untuk Browser IE:
gunakan waspada (yaitu);
Pengujian:
Perbarui 01 Jun 2017
Sekarang kita bisa menggunakan sesuatu yang lebih mudah dan sederhana:
sumber
Sejujurnya saya akan mengatakan menggunakan perpustakaan yang melakukan apa yang Anda butuhkan (seperti platform.js misalnya). Pada titik tertentu hal akan berubah dan perpustakaan akan dilengkapi untuk perubahan itu dan penguraian manual menggunakan ekspresi reguler akan gagal.
Terima kasih Tuhan, IE hilang ...
sumber