views:

967

answers:

5

In the past people used to wrap HTML comment tags around blocks of JavaScript in order to prevent "older" browsers from displaying the script. Even Lynx is smart enough to ignore JavaScript, so why do some people keep doing this? Are there any valid reasons these days?

<script type="text/JavaScript">
<!--
//some js code
-->
</script>

Edit: There is ONE situation I did encounter. Some code editors, such as Dreamweaver, get confused by quoted HTML inside a JavaScript string when in "design view" and try to display it as part of your page.

+52  A: 

No, absolutely not. Any user agent, search engine spider, or absolutely anything else these days is smart enough to ignore Javascript if it can't execute it.

There was only a very brief period when this was at all helpful, and it was around 1996.

MarkR
LOL - Guilty! But then, I learned to do this in 1996 and no one has ever said different...
Steven A. Lowe
I think I have read that it is deprecated but I can't find the link.
some
+13  A: 

There isn't a good reason to do this anymore, as the browsers which required this have by and large disappeared from the web.

In fact, doing this can actually cause unintended problems with certain older browsers' attempts to interpret the page if it uses XHTML - from developer.mozilla.org:

  • Mozilla 1.1+/Opera 7

    Do not apply CSS or execute the JavaScript.

  • Netscape 7.0x/Mozilla 1.0.x

    Do not apply CSS but does execute the JavaScript.

  • Internet Explorer 5.5+

    Can not display the document.

That site also links to examples of the several problems mentioned above.

ConroyP
+12  A: 

You should use CDATA though...

<script type="text/javascript" charset="utf-8">
/* <![CDATA[ */

/* ]]> */
</script>

Because if you have '<', '>', '&', etc in your code, the code won't validate :)

Ionut Staicu
IF you want to be XHTML compliant, otherwise you don't need this.
Jason Bunting
If you really want to use Javascript in well-formed XML documents, put it in an external .js file. For example, Mozilla XUL applications require this.
MarkR
heh, the reply was for in document scripts. Ofcourse, i recommend to put all css and jss in external files :)
Ionut Staicu
+1 - everyone should strive to be XHTML compliant, even though you have to account for some quirks. There are various XML parsing libraries/tools that will be less confused with your XHTML if it validates. Let's not turn XHTML into the new sloppy HTML 'transitional'.
legenden
Remind me again why we should strive to be XHTML compliant...
drlouie - louierd
Let's say you want to parse the code for various purpose. If is not valid you may have everything screwed up :)
Ionut Staicu
You can also parse HTML; HTML can also be made valid; http://hixie.ch/advocacy/xhtml ;)
Marcel Korpel
+1  A: 

Not having to use CDATA blocks is one of the reasons I prefer to use HTML 4.01 Strict as my docttype, but, Staicu, I thought it used the following syntax:

<script charset="utf-8">
//<![CDATA[

//]]>
</script>

Maybe the two are equivalent? Anyone know if there is an advantage to one over the other?

Andrew Hedges
// is a line comment, /* */ is a block comment. You can use either one, to the javascript it is the same (it is commented). But you forgot to set the type="text/javascript"
some
type="text/javascript" is ignored by browsers in favor of the MIME type sent by the server. It's omission was intentional.
Andrew Hedges
+2  A: 

Hell no, nobody needs this anymore and if you do, you have some more problems to care about. When you really want to support browsers that need that, you have to watch out for a lot more things. Not even talking about the lack of css!

However, the bigger problem is, that people do this wrong. Actually your example is wrong, because the line

-->

should read

//-->

secondly, you type attribute says "text/JavaScript" what is wrong too. It has been "text/javascript" (all lower case) but this is obsolete (see the IANA List) and now it should be "application/javascript" (see another IANA List. However, Douglas Crockford, the JS Guru, said you just should leave it out.

Another Problem nobody mentioned already is this: Within HTML comments, "--" is not allowed and that means you can't use "x--" to decrement x by one.

Tim Büthe