W3C home > Mailing lists > Public > www-validator@w3.org > January 2005

Re: [VE][64] Error Message Feedback

From: Jukka K. Korpela <jkorpela@cs.tut.fi>
Date: Sun, 30 Jan 2005 11:18:31 +0200 (EET)
To: DjMafia <barrerad@gye.satnet.net>
Cc: www-validator@w3.org
Message-ID: <Pine.GSO.4.58.0501301056090.29582@korppi.cs.tut.fi>

On Sun, 30 Jan 2005, DjMafia wrote:

> <script type="text/javascript"> if (!chatterbox || chatterbox != 'ok') {
> var txt = "This <a href="http://chatter.flooble.com/">flooble
> chatterbox</a> is"

Quick answer: put all script code into an external file that you refer to
via a src attribute in a script element. Alternatively, unless you have
some particular reason to use XHTML, switch to HTML, where the problem
is smaller (you only need to worry about things like </a>, which you
can write as <\/a> in JavaScript).

In XHTML, which you seem to be using, a script element's content is
#PCDATA (parsed character data), and hence e.g. "<a" is interpreted as
starting an element (but no elements are allowed inside a script element).

In principle, you could replace any occurrence of "<" inside a
script element by "&lt;". This would be fine as far as XHTML is concerned.
But this would not be practical, since Internet Explorer does not actually
"do XHTML" but e.g. interprets the content of a script element by
classic HTML rules (to the extent it plays by any rules).

Here's a tricky way of dealing with the problem if the use of an external
script file is for some reason excluded: In your Javascript code, define a
variable (effectively a constant) with "<" as its value, without using the
"<" as itself of course, e.g.
  var lt = '\x3c';
Then use this variable instead of the "<" character inside the script.
You cannot use a variable inside a quoted string, so you need to split
strings e.g. as follows:
  var txt = 'This ' + lt + 'a href="http://chatter.flooble.com/">flooble '
          + 'chatterbox' + lt + '/a is';

Note that the validator's FAQ entry
http://validator.w3.org/docs/help.html#faq-javascript
is partly dated since it refers to
http://www.htmlhelp.com/tools/validator/problems.html#script
which is a simple and understandable explanation but only applies to HTML,
where the problem is more limited.

> I would really appreciate a quick answer for this problem... deadline is
> February 2... please...

_Especially_ if you need quick help, you should post the URL of the page
in your message. It is generally more useful than anything else
in identifying the problem.

-- 
Jukka "Yucca" Korpela, http://www.cs.tut.fi/~jkorpela/
Received on Sunday, 30 January 2005 09:19:05 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 25 April 2012 12:14:18 GMT