スクリプティング・モジュールに関するメモ

  • noscript要素がscript要素の子要素となっている。これによって、例えばJavascriptは対応しているけれどtclは使えないといった時のnoscriptの動作の矛盾を解決できる。
  • スクリプト言語の指定はmeta要素ではなく、body内で空のscript要素を用いて行なう。でもXHTML2非対応ブラウザで見ると、それ以降全く表示されないという危険性が。
  • script要素はscript要素を包括できる。この時に期待される動作は、object要素の外側から優先に対応状況によって実行させるという、それと同じ。

<script type="text/x-[]perl[]" src="./hoge.pl">
<script type="text/[]javascript[]">
document.write('Hello World!');
<noscript>
<p>Hello World!</p>
<noscript>
</script>
</script>
XHTML 2.0は、基本的に後方互換性を考慮したものにはなっていない。でもここまで仕様変更となると、実装するブラウザメーカもさぞ大変かと。MozillaOperaには期待してます。IE.NETは・・・どうなる事やら。
一連の入れ子関係に関する仕様変更は、適切に代替テキストを用意できるという意味でもより良いマークアップとなる。noscript要素は今まで単なるscript非対応時のメッセージだったけれど、単なるテキスト情報(noscriptの中身)をよりわかりやすい形でスクリプトによって表現する(script要素)、と捉える事もできるようになった。
蛇足だけれども、既存のscript要素内を丸々コメントアウトするテクニックはますます危険になっている模様。script要素はscript要素及びnoscript要素を含めてしまえるので、最早他のブロックレベル要素とほぼ変わらない扱いに。やはり基本的には外部スクリプトを用意するのがbetter。XHTML1.1でscript要素をコメントアウトで妥協していた私も、少し悩まされた。とはいえCGIで吐き出すソースのスクリプト部分を、一々外部ファイルとして保存するのも大変だし。やはり巧くモジュール化するしか無いのだろうか。
― あと、仕様を見る限りではhead要素内にnoscript要素が存在し得そうですが、DTD的にこれは防げるのでしょうかね。下手をするとhead要素の存在意義自体、危ぶまれそうですが。