html - internet - <!-[if! IE]> no funciona
if ie 8]> (16)
Tengo problemas para obtener
<!--[if !IE]>
trabajar. Me pregunto si es porque tengo esto en mi documento
<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
Cuando agrego
<!--[if !IE]><!-->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<!--<![endif]-->
a mi encabezado por alguna razón, no funciona. Sin embargo, si agrego
<!--[if !IE]><!-->
<style>
All my css in here
</style>
<!--<![endif]-->
a la página html real (en el encabezado) funciona. ¿Alguna sugerencia? Aclamaciones
Actualiza a mi pregunta
Ok, cuando eliminé <!-->
solo revisé IE que estaba funcionando pero ahora de regreso en FF el no-ie.css también se había aplicado a FF. Así que volví a agregar en el <!-->
y eliminé el / (y lo agregué a la plantilla principal para que el cms no lo agregara nuevamente) y todo está funcionando en FF, pero ahora la hoja de estilos se está aplicando al IE ! Así que lo intenté
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<![endif]-->
y
<!--[if !IE]> -->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<!-- <![endif]-->
Y eso no funcionó. Básicamente, estoy intentando que esta página funcione http://css-tricks.com/examples/ResponsiveTables/responsive.php pero mueva el css a una hoja de estilo. Seguramente tiene que ser simple. ¿Qué me estoy perdiendo? Prefiero no usar JQuery si no es necesario. Aclamaciones
Debes poner un espacio para <!-- [if !IE] -->
Mi bloque de css completo va de la siguiente manera, ya que IE8 es terrible con las consultas de los medios
<!-- IE 8 or below -->
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="/Resources/css/master1300.css" />
<![endif]-->
<!-- IE 9 or above -->
<!--[if gte IE 9]>
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<![endif]-->
<!-- Not IE -->
<!-- [if !IE] -->
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<!-- [endif] -->
El comentario condicional es un comentario que comienza con <!--[if IE]>
que no puede leer ningún navegador, excepto IE.
desde 2011 El comentario condicional no se admite a partir de IE 10 como lo anunció Microsoft en ese momento https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx
La única opción para utilizar los comentarios condicionales es solicitar IE para ejecutar su sitio como IE 9 que admite los comentarios condicionales.
puede escribir sus propios archivos css y / o js, es decir, solo y otros navegadores no lo cargarán ni ejecutarán.
este fragmento de código muestra cómo hacer que IE 10 o 11 ejecute ie-only.css y ie-only.js, que contiene códigos personalizados para resolver problemas de compatibilidad de IE.
<html>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<link rel="stylesheet" type="text/css" href=''/css/ie-only.css'' />
<script src="/js/ie-only.js"></script>
<![endif]-->
</html>
En caso de que esté trabajando con IE 10 o superior, como se menciona en http://tanalin.com/en/articles/ie-version-js/ los comentarios condicionales ya no son compatibles. Puede consultar https://gist.github.com/jasongaylord/5733469 como un método alternativo, que también verifica la versión de Trident desde navigator.userAgent. Esto también se verifica en caso de que el navegador esté funcionando en modo de compatibilidad.
En primer lugar, la sintaxis correcta es:
<!--[if IE 6]>
<link type="text/css" rel="stylesheet" href="/stylesheets/ie6.css" />
<![endif]-->
Pruebe esta publicación: http://www.quirksmode.org/css/condcom.html y http://css-tricks.com/how-to-create-an-ie-only-stylesheet/
Otra cosa que puedes hacer:
Verifique el navegador con jQuery:
if($.browser.msie){ // do something... }
en este caso, puede cambiar las reglas de css para algunos elementos o agregar una nueva referencia de enlace css:
lea esto: http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx
Entiendo que este código funciona en mi navegador:
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
Nota para este código: compatibilidad con HTML5 Shiv y Respond.js IE8 de elementos HTML5 y consultas de medios
Esto funciona para mí en todos los navegadores que superan la versión 6 (IE7, 8, 9, 10, etc., Chrome 3 hasta lo que es ahora y FF ver 3 hasta lo que es ahora):
//test if running in IE or not
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf(''msie'') != -1 || myNav.indexOf(''trident'') != -1) ? true : false;
}
Estoy usando este javascript para detectar el navegador IE
if (
navigator.appVersion.toUpperCase().indexOf("MSIE") != -1 ||
navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1 ||
navigator.appVersion.toUpperCase().indexOf("EDGE") != -1
)
{
$("#ie-warning").css("display", "block");
}
Gracias Fernando68, usé esto:
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf(''msie'') != -1 || myNav.indexOf(''trident'') != -1) ? true : false;
}
if(isIE()){
$.getScript(''js/script.min.js'', function() {
alert(''Load was performed.'');
});
}
La sintaxis recomendada por Microsoft para los "comentarios" condicionales revelados a nivel inferior es esta:
<![if !IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<![endif]>
Estos no son comentarios, pero funcionan correctamente.
Los navegadores distintos de IE tratan los enunciados condicionales como comentarios porque están encerrados dentro de etiquetas de comentarios.
<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->
Sin embargo, cuando se dirige a un navegador que NO es IE, tiene que usar 2 comentarios, uno antes y otro después del código. IE ignorará el código entre ellos, mientras que otros navegadores lo tratarán como código normal. La sintaxis para apuntar a navegadores no IE es por lo tanto:
<!--[if !IE]-->
IE ignores this
<!--[endif]-->
Nota: estos comentarios condicionales ya no son compatibles desde IE 10 en adelante .
Para el navegador IE:
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<![endif]-->
Para todos los navegadores que no sean IE:
<![if !IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<![endif]>
Para todos los IE mayores de 8 O todos los navegadores que no sean IE:
<!--[if (gt IE 8)|!(IE)]><!--><script src="/_JS/library/jquery-2.1.1.min.js"></script><!--<![endif]-->
Una actualización si alguien todavía llega a esta página, preguntándose por qué la orientación ie no funciona. IE 10 y siguientes ya no admiten comentarios condicionales. Desde el sitio web oficial de MS:
El soporte para comentarios condicionales se ha eliminado en los estándares de Internet Explorer 10 y en los modos de peculiaridades para mejorar la interoperabilidad y el cumplimiento con HTML5.
Por favor, mira aquí para más detalles: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
Si necesita apuntar desesperadamente, es decir, puede usar este código jquery para agregar una clase ie a y luego usar la clase .ie en su CSS para apuntar, por ejemplo, navegadores.
if ($.browser.msie) {
$("html").addClass("ie");
}
Actualización: $ .browser no está disponible después de jQuery 1.9. Si actualiza a jQuery anterior a 1.9 o si ya lo usa, puede incluir el script de migración jQuery después de jQuery para que agregue partes faltantes: jQuery Migrate Plugin
Alternativamente, compruebe este hilo para posibles soluciones: error browser.msie después de actualizar a jQuery 1.9.1
Yo uso eso y funciona:
<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
Esto es para hasta IE9
<!--[if IE ]>
<style> .someclass{
text-align: center;
background: #00ADEF;
color: #fff;
visibility:hidden; // in case of hiding
}
#someotherclass{
display: block !important;
visibility:visible; // in case of visible
}
</style>
Esto es para después de IE9
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {enter your CSS here}
Para dirigirse a los usuarios de IE:
<!--[if IE]>
Place Content here for Users of Internet Explorer.
<![endif]-->
Para orientar a todos los demás:
<![if !IE]>
Place Content here for Users of all other Browsers.
<![endif]>
Los Comentarios condicionales solo pueden ser detectados por Internet Explorer, todos los demás navegadores lo insertan como Comentarios normales.
Para orientar IE 6,7, etc. Debe usar "Mayor que Igual" o "Menor que (Igual)" en la declaración If. Me gusta esto.
Mayor que o igual:
<!--[if gte IE 7]>
Place Content here for Users of Internet Explorer 7 or above.
<![endif]-->
Menor que:
<!--[if lt IE 6]>
Place Content here for Users of Internet Explorer 5 or lower.
<![endif]-->
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->
Nota: estos comentarios condicionales ya no son compatibles desde IE 10 en adelante .