文書型 | 適用 | 子要素 | 開始タグ | 終了タグ | 分類 |
---|---|---|---|---|---|
Strict | ○ | スクリプトデータ | 必須 | 必須 | head要素 body要素 blockquote要素 form要素の子要素 / インライン要素 |
Transitional | ○ | ||||
Frameset | ○ |
text/javascript
text/ecmascript
text/vbscript
document.write
で何かを書き出すようなプログラムがないなど。)ユーザーエージェントはスクリプトの実行を後回しにして、そのまま続けて文書の内容を表示することができます。script要素の中身が多すぎるときなどに有効です。HTML文書中にスクリプトを組み込むための要素です。必ずtype属性でスクリプト言語の種類を指定します。(JavaScriptであればtype="text/javascript"
です。)script要素はhead要素内、body要素内のほとんどどんな場所にも配置することができます。
スクリプトを組み込むには、script要素の中身に直接スクリプトを記述するか、外部スクリプトファイルを用意しsrc属性でそのURIを指定します。script要素内にスクリプトを記述する場合は次のようになります。
<script type="text/javascript">
alert("Hello, World!");
</script>
外部スクリプトファイルを読み込む場合は次のように記述します。
<script type="text/javascript" src="hello.js"></script>
スクリプトを実行しないように設定している人や、スクリプトが実行できないブラウザを使っている人もいます。noscript要素を使うと、スクリプトを実行しない・実行できない環境のために、代わりの内容を提供することができます。
スクリプトを利用すると、HTML文書に動きを与えることができます。しかし、スクリプトを実行しないと閲覧できないようなページは望ましくありません。(例えば、JavaScriptがオンになっていないと他のページを見ることができないプルダウン式のメニュー。)noscript要素で代わりの内容を提供するなどして、スクリプトが実行されない環境でも利用できるようにしましょう。
script要素に対応していないブラウザがscript要素の中身を画面に表示してしまうのを防ぐために、script要素の中身をコメントとして扱うことが推奨されていました。
<script type="text/javascript"><!--
alert("Hello, World!");
//-->
</script>
<script type="text/vbscript"><!--
Msgbox "Hello, World!"
'-->
</script>
style要素のときと同じように筆者の環境で実験してみたところ、コメントアウトされていないscript要素の中身を表示してしまったブラウザは、Netscape 1?8とInternet Explorer 3?6のうち、Netscape Navigator 1だけでした。やはりコメントアウトしないとAnother HTML-lintで警告されますが、無視してもよいと思います。
<!ELEMENT SCRIPT - - %Script; -- script statements -->
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
type %ContentType; #REQUIRED -- content type of script language --
src %URI; #IMPLIED -- URI for an external script --
defer (defer) #IMPLIED -- UA may defer execution of script --
>