W3C home > Mailing lists > Public > whatwg@whatwg.org > August 2009

[whatwg] HTML 5 Script Tag

From: Eduard Pascual <herenvardo@gmail.com>
Date: Fri, 7 Aug 2009 01:53:42 +0200
Message-ID: <6ea53250908061653q734bfbcfqa3c82b369266c5ab@mail.gmail.com>
On Fri, Aug 7, 2009 at 1:14 AM, Cready, James<jcready at rtcrm.com> wrote:
> You make a great point. But whether or not you use the XML/XHTML <syntax/>
> or the HTML 4 <syntax> doesn?t matter much. Since like I showed in my
> previous example: the instant you specify a src attribute on your opening
> <script> tag the browser will not execute anything inside the tags.

You are quite missing the point: see this example:
        <script src="test.js" />
        <p>Hello World!</p>

Unless you serve this as XHTML (with an XML mimetype), nothing will be
shown on the browser.

Let's see why: text/html triggers the browser's tag-soup parser, which
fixes issues on the fly. The first issue it finds is the straneous
trailing slash on the script, which it just ignores. Then, </head> is
probably taken as literal (as if you had typed &lt;/head&gt;), because
the <head> can't be closed until the <script> is closed. Then that
<body>...</body> will be taken either as a children of the <script> or
as just text (I don't really know *all* the details of error-handling
case by case); but in any case it is content of a <script> inside the
<head>, so there is no chance it will get rendered. Once the parser
encounters the end of the file, it implicitly closes the currently
open tags, adding something like </script></head></html>.
Summarizing, the above sample is taken by any browser as page with an
external <script> that includes some junk content, but with no body at

In the general case, the issue is not the trailing slash for
<self-closing />. The issue is that the browser will ignore everything
from <script ... /> until it encounters a </script>

I like the idea of using <link> to reference external scripts; and it
shouldn't be too hard for vendors to implement. However, there is no
chance to change how browsers handle <script>. Not with so many
millions of pages relying on that behavior. And you can still use
XHTML5 if you want the "/>" to mean something.

Eduard Pascual
Received on Thursday, 6 August 2009 16:53:42 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:15 UTC