views:

706

answers:

6

I've tried:

<!--[if lt IE 6.0]>
HTML TO HIDE FROM IE6
<![endif]-->

but unfortunately the stuff gets hidden from firefox too. Anyone have methods that work? I want the stuff to be hidden from only IE6

Thanks

A: 

Little confused with your question but Here is the javascript code to detect the version of Internet Explorer. Taken from Detecting Internet Explorer More Effectively. Add the HTML contents which are to be hidden from IE6 in a div and hide it using the function below.

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    if ( ver == 6.0 ) 

            **Hide the DIV here**

  }
  alert( msg );
}
Shoban
+2  A: 

You can't use IE conditional comments to hide stuff, only to enable stuff.

A good way would be to sniff the user agent server-side and not print the HTML in question, if that is an option for you.

Your best bet though is to conditionally include some CSS that sets display: none on the element you don't want.

<!--[if lte IE 6.0]>
<style type="text/css" media="screen">
    #myUnwantedElement { display: none; }
</style>
<![endif]-->

You can even combine these two methods, in case CSS is disabled (unlikely, but hey, being paranoid can pay off ;)).

deceze
It is possible to hide things from IE. See my answer.
Ionuț G. Stan
I stand corrected.
deceze
A: 

Try

<!--[if lte IE 6.0]>

in your CSS, using lte (less-than or equal) rather than lt (less-than).

Richard Ev
A: 

Conditional comments shouldn't affect Firefox at all as they are commented out and the browser should ignore it. I would check that your Firefox stylesheet is correct and embeded correctly something like this:

<link href="/css/main.css" rel="stylesheet" type="text/css" />
<!--[if lt IE 7]>
<link href="/css/ie6.css" rel="stylesheet" type="text/css" media="screen"/>
<![endif]-->
matpol
+8  A: 

You can actually use conditional comments to hide things from Internet Explorer contrary to the answer from deceze. These types of conditional comments are called 'Downlevel Reveal Conditional Comments'. (These are different from comments used to show things to internet explorer which are more common, those are known as 'Downlevel hidden conditional comments')


<!--[if lte IE 6]><![if gte IE 7]><![endif]-->
<!-- This is a bit mad, but code inside here is served to everything 
    except browsers less than IE7, so all browsers will see this -->
<!--[if lte IE 6]><![endif]><![endif]-->

However if you already using a downlevel hidden conditional comment to show a IE6 stylesheet just to IE6 then you might be best off just hiding it with CSS.

I hope this helps.

Natalie Downe
This is good, because it puts the <![]> constructs inside HTML comments, so the page will still validate.
Steve Gilham
+1, nice trick.
Ionuț G. Stan
A: 

Edit

After reading Natalie Downe's answer, I'd do it like this:

<!--[if true]><![if !IE]><![endif]-->
<h1>You're not using IE. Well done!</h1>
<!--[if true]><![endif]><![endif]-->

You can use negated conditional comments to hide things from IE but not from other browsers.

<!DOCTYPE html>

<html>
<head>
<title></title>
<style type="text/css"></style>
<script type="text/javascript"></script>
</head>
<body>

<![if !IE]>
<h1>You're not using IE. Well done!</h1>
<![endif]>

</body>
</html>

It renders some invalid markup, but it works.

Reference: http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx

Ionuț G. Stan