Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/07/2010, 17:27
all-ill
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: NO llamar script si el navegador es internet explorer

Correcto, los comentarios condicionales sólo los reconoce IE.

Si el navegador es IE al leer <![if !IE]> responderá "false" a la condición "Si no es IE" y por tanto saltará hasta después de <![endif]> sin interpretar el código contenido en ese "comentario condicional".

Si el navegador no es IE como no reconoce los comentarios condicionales al leer <![if !IE]> no entenderá lo que dice y procesará el código contenido dentro del comentario condicional.
Notar que
Código HTML:
Ver original
  1. <![if !IE]> loquesea <![endif]>
no es realmente un comentario al uso, se trata de un "Downlevel-revealed Conditional Comment" que no respeta el formato de comentarios html
Código HTML:
Ver original
  1. <!-- comentario -->
Por este motivo el código contenido en este comentario condicional es visible en otros navegadores distintos a IE, pues al no estar entre <!-- y --> interpretan normalmente el código contenido en lugar de interpretarlo como un comentario. El ejemplo expuesto tiene el inconveniente de no validar.
Para solucionar el problema de validación se puede usar del siguiente modo:
Cita:
http://www.positioniseverything.net/...s/multiIE.html
To select exclusivly for any non IE - use " IE & !IE " for a downlevel-revealed within a downlevel-hidden CC
Código HTML:
Ver original
  1. <!--[if IE]><![if !IE]><![endif]-->  html  <!--[if IE]><![endif]><![endif]-->
En este ejemplo se usa un doble condicional. Cuando el navegador "es IE" comprueba "si no es IE" (para omitir el código contenido en el comentario condicional). Notar que ahora el comentario condicional es un comentario html válido pero que no envuelve el código contenido (fijarse en los elementos resaltados en negrita), por lo que todos los navegadores interpretarán el código a excepción de IE que revisará la condición !IE.
Cita:
<!--[if IE]><![if !IE]><![endif]-->
Espero que a pesar de ser una explicación del código algo rebuscada se entienda el funcionamiento. Evidentemente hay otros modos de detectar el navegador y de hecho, ya que se trata de no ejecutar unas funciones javascript, podría controlarse desde el propio código javascript si se quisiera.