Asumsi...
- ... bahwa itu adalah mesin rendering crunky dari versi lama IE yang ingin Anda deteksi, untuk membuat gaya terlihat tepat di IE lama (jika tidak, gunakan deteksi fitur)
- ... bahwa Anda tidak bisa hanya menambahkan komentar bersyarat ke HTML - misalnya untuk plugin JS yang dapat diterapkan ke halaman manapun (jika tidak, cukup lakukan trik kelas bersyarat pada
<body>atau <html>)
... maka ini mungkin trik terbaik (berdasarkan non-jQuery, varian yang sedikit kurang fleksibel ). Ini membuat kemudian tes untuk kemudian menghapus komentar bersyarat yang sesuai.
(Komentar bersyarat diabaikan dalam 'mode standar' IE10 + - tetapi itu seharusnya baik-baik saja karena 'mode standar' IE10 + tidak memiliki mesin rendering yang gila!)
Jatuhkan fungsi ini:
function isIE( version, comparison ){
var $div = $('<div style="display:none;"/>');
// Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
$div.appendTo($('body'));
$div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a> </a><![endif]-->');
var ieTest = $div.find('a').length;
$div.remove();
return ieTest;
}
Kemudian gunakan seperti ini:
if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }
if(isIE(8)){ /* runs in IE8 */ }
if(isIE(9)){ /* runs in IE9 */ }
if(isIE(8,'lte')){ /* runs in IE8 or below */ }
if(isIE(6,'lte')){ /* if you need this, I pity you... */ }
Saya juga menyarankan hasil cache dari fungsi ini sehingga Anda tidak perlu mengulanginya. Misalnya, Anda bisa menggunakan string (comparison||'')+' IE '+(version||'')sebagai kunci untuk menyimpan dan memeriksa hasil tes ini di suatu objek di suatu tempat.