Asumiendo...
- ... que es el motor de renderizado crujiente de versiones antiguas de IE lo que está interesado en detectar, para que un estilo se vea bien en el IE antiguo (de lo contrario, use la detección de características)
- ... que no puede simplemente agregar comentarios condicionales al HTML , por ejemplo, para complementos JS que se pueden aplicar a cualquier página (de lo contrario, simplemente haga el truco de las clases condicionales en
<body>
o <html>
)
... entonces este es probablemente el mejor truco (basado en esta variante que no es de jQuery, un poco menos flexible ). Crea, luego prueba y luego elimina un comentario condicional apropiado.
(Los comentarios condicionales se ignoran en IE10 + 'modo estándar', ¡pero eso debería estar bien ya que IE10 + 'modo estándar' no tiene un motor de renderizado loco!)
Suelta esta funció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;
}
Entonces úsalo así:
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... */ }
También sugiero almacenar en caché los resultados de esta función para que no tenga que repetirla. Por ejemplo, puede usar la cadena (comparison||'')+' IE '+(version||'')
como clave para almacenar y verificar el resultado de esta prueba en un objeto en algún lugar.
user56reinstatemonica8
fuente
jquery.support.opacity
solo hizo lo que quería. Gracias ...jQuery.browser
, no necesite una biblioteca adicional como Modernizr y no requiera editar el HTML (por lo que es adecuado para complementos, etc.) ...