Search code examples
javascripthtmlinternet-explorerconditional-comments

What would make Internet Explorer NOT process conditional comments properly?


I'm writing JSP pages and using Tomcat, and it needs to work for IE 7 in addition to Firefox and Chrome (client needs).

In my program, I include both pieces of code. It works properly for non-IE browsers.

My problem is that CODE A does not work properly for IE, in that it treats it like a comment rather than a conditional comment that it should be reading. Any idea why this would happen and how to fix it?

<script type="text/javascript">

 ...

 <!-- CODE A -->
 <!--[if IE]>
   url = "http://" + "..." + "&var=1";
 <![endif]-->

 <!-- CODE B -->
 <!--[if !IE]> -->
   url = "http://" + "..." + "&amp;var=1";
 <!-- <![endif]-->

 ...

</script>

Solution

  • Conditional HTML comments only work in HTML. JavaScript is not HTML. Rather use conditional JS comments in JS:

    var IE = /*@cc_on!@*/false;
    

    (only IE will interpret the ! which effectively makes it true)

    Then you can use it as follows

    if (IE) {
        url = "http://" + "..." + "&var=1";
    } else {
        url = "http://" + "..." + "&amp;var=1";
    }
    

    Feature detection should however be preferred in JS.