body 要素の中に script 要素を入れると、script 要素の直後に、head 要素の閉じタグと body 要素の開きタグが挿入され、結果として script 要素より前のテキストが無視される現象に出会った ( firefox 1.0.7)。具体的なコードを書くと、
<body> foo bar something <script type="text/javascript"></script> FOO BAR ANYTHING </body>
を、 firefox は次のように解釈する。
<body> foo bar something <script type="text/javascript"></script> </head><body> FOO BAR ANYTHING </body>
この場合、前半の foo bar something はブラウザーに表示されない。
原因は head 要素内の script 要素
原因は、head 要素内の次の script 要素だった。
<head> <title>foo</title> <script type="text/javascript" src="bar.js"/> </head>
見てお分かりだろうか? script 要素の閉じタグがない。XHTML では、HTML で許されていた
<br>
のような閉じタグの省略が許されなくなった。そのため、厳密には
<br></br>
のように閉じタグが必要になった。でも、それじゃあ面倒だってんで、
<br/>
のような書き方も許されている。
そこで、script 要素も (要素の中身が空なら) 同じ書き方が出来るだろう、と
<script type="text/javascript" src="bar.js"></script>
を
<script type="text/javascript" src="bar.js"/>
のように書いたわけ。確かにこの書き方は、本文中に script 要素の閉じタグが現れるまでは動いた。でも、body 要素内に script 要素の閉じタグが現れたとたん、head 要素内の script 要素は閉じていない、と firefox に解釈されてしまったらしい。そしてご丁寧にも、head 要素の閉じタグと body 要素の開きタグまで挿入してくれちゃったわけ。
XHTML の仕様をまだ確認していないのだけど、任意の要素を <div/> のように書くのは許されていないのかしらん。
今夜はこいつのおかげでえらい目に遇った...
No comments:
Post a Comment