- From: Eduard Pascual <herenvardo@gmail.com>
- Date: Fri, 7 Aug 2009 01:53:42 +0200
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: <!DOCTYPE PUBLIC html> <html> <head> <script src="test.js" /> </head> <body> <p>Hello World!</p> </body> </html> 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 </head>), 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 all. 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. Regards, Eduard Pascual
Received on Thursday, 6 August 2009 16:53:42 UTC