Varsayalım ...
- ... karmaşık oluşturma motoru olduğunu bir stilin eski IE'de doğru görünmesini sağlamak için algılamak istediğiniz eski IE sürümlerinin (aksi takdirde, özellik algılamayı kullanın)
- ... HTML'ye yalnızca koşullu yorumlar ekleyemezsiniz - örneğin, herhangi bir sayfaya uygulanabilen JS eklentileri için (aksi takdirde,
<body>veya üzerinde koşullu sınıfların hilesini yapın <html>)
... o zaman bu muhtemelen en iyi numaradır ( bu jQuery olmayan, biraz daha az esnek varyantı temel alır ). Daha sonra testler oluşturur ve ardından uygun bir koşullu yorumu kaldırır.
(IE10 + 'standartlar modunda' koşullu yorumlar göz ardı edilir - ancak IE10 + 'standartlar modu' çılgın bir işleme motoruna sahip olmadığı için bu iyi olmalıdır!)
Bu işlevi bırakın:
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;
}
O zaman şu şekilde kullanın:
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... */ }
Ayrıca, bu işlevin sonuçlarını önbelleğe almanızı öneririm, böylece tekrarlamanız gerekmez. Örneğin, dizeyi (comparison||'')+' IE '+(version||'')bir nesnede bir nesnede saklamak ve bu testin sonucunu kontrol etmek için bir anahtar olarak kullanabilirsiniz .