Discussion:
script tag
Giorgos Pontikakis
2007-03-08 21:32:10 UTC
Permalink
Hello,

I think I found a bug in cl-who. The following sample code:

(defun script-bug ()
(with-html-output-to-string (*standard-output* nil :indent t)
(:html
(:head
(:script :src "/myscript.js" :type "text/javascript"))
(:body
(:p "Some text")
(:script :type "text/javascript" "alert(5);")))))

gives:

"
<html>
<head>
<script src='/myscript.js' type='text/javascript' />
</head>
<body>
<p>
Some text
</p>
<script type='text/javascript'>
alert(5);
</script>
</body>
</html>"


The first script tag is not closed properly. It should be:
<script src='/myscript.js' type='text/javascript'></script>

If I get this right, this happens because there are no <script>
contents. But the ending </script> must not be omitted even in this
case. This seems to prevent correct parsing of the document.

Cheers,

Giorgos
Edi Weitz
2007-03-08 22:00:20 UTC
Permalink
Hi,
Post by Giorgos Pontikakis
(defun script-bug ()
(with-html-output-to-string (*standard-output* nil :indent t)
(:html
(:head
(:script :src "/myscript.js" :type "text/javascript"))
(:body
(:p "Some text")
(:script :type "text/javascript" "alert(5);")))))
"
<html>
<head>
<script src='/myscript.js' type='text/javascript' />
</head>
<body>
<p>
Some text
</p>
<script type='text/javascript'>
alert(5);
</script>
</body>
</html>"
<script src='/myscript.js' type='text/javascript'></script>
If I get this right, this happens because there are no <script>
contents. But the ending </script> must not be omitted even in this
case. This seems to prevent correct parsing of the document.
The tag /is/ closed correctly. Note that there's a difference between

<script src='/myscript.js' type='text/javascript' />

and

<script src='/myscript.js' type='text/javascript'>.

Do you have a concrete application that can't parse this?

Cheers,
Edi.
Erik Enge
2007-03-08 22:03:50 UTC
Permalink
Could be this:

http://piecesofrakesh.blogspot.com/2005/03/script-tag-in-internet-explorer.html

Erik.
Post by Edi Weitz
Hi,
Post by Giorgos Pontikakis
(defun script-bug ()
(with-html-output-to-string (*standard-output* nil :indent t)
(:html
(:head
(:script :src "/myscript.js" :type "text/javascript"))
(:body
(:p "Some text")
(:script :type "text/javascript" "alert(5);")))))
"
<html>
<head>
<script src='/myscript.js' type='text/javascript' />
</head>
<body>
<p>
Some text
</p>
<script type='text/javascript'>
alert(5);
</script>
</body>
</html>"
<script src='/myscript.js' type='text/javascript'></script>
If I get this right, this happens because there are no <script>
contents. But the ending </script> must not be omitted even in this
case. This seems to prevent correct parsing of the document.
The tag /is/ closed correctly. Note that there's a difference between
<script src='/myscript.js' type='text/javascript' />
and
<script src='/myscript.js' type='text/javascript'>.
Do you have a concrete application that can't parse this?
Cheers,
Edi.
_______________________________________________
cl-who-devel site list
http://common-lisp.net/mailman/listinfo/cl-who-devel
Edi Weitz
2007-03-08 22:34:38 UTC
Permalink
Post by Erik Enge
http://piecesofrakesh.blogspot.com/2005/03/script-tag-in-internet-explorer.html
Ah, interesting, thanks.

So, you should better use (:SCRIPT "") then to avoid that.

Loading...