script要素 -- スクリプト

基本データ

script要素
文書型 適用 子要素 開始タグ 終了タグ 分類
Strict スクリプトデータ 必須 必須 head要素 body要素 blockquote要素 form要素の子要素 / インライン要素
Transitional
Frameset

属性

固有属性

type="MIMEタイプ"(必須)
Strict: ○ | Transitional: ○ | Frameset: ○
スクリプト言語を表すMIMEタイプを指定します。この属性は必ず記述する必要があります。次のような値がよく利用されます。
JavaScript
text/javascript
ECMAScript
text/ecmascript
VBScript
text/vbscript
src="スクリプトファイルのURI"
Strict: ○ | Transitional: ○ | Frameset: ○
外部のスクリプトファイルを読み込むとき、そのURIを指定します。この属性が指定されたときは、script要素の中身が無視されます。
charset="文字コード"
Strict: ○ | Transitional: ○ | Frameset: ○
src属性で示された外部スクリプトファイルの文字コードを指定します。
defer
Strict: ○ | Transitional: ○ | Frameset: ○
この属性を指定すると、スクリプトが文書の内容を生成しないことをユーザーエージェントに伝えることができます。(JavaScriptであれば、document.writeで何かを書き出すようなプログラムがないなど。)ユーザーエージェントはスクリプトの実行を後回しにして、そのまま続けて文書の内容を表示することができます。script要素の中身が多すぎるときなどに有効です。
language="言語名"(非推奨)
Strict: × | Transitional: △ | Frameset: △
言語名を指定します。type属性で言語の種類を示すことができるので、この属性は必要ありません。

解説

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で警告されますが、無視してもよいと思います。

Strict DTDの定義

<!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 --
  >

Information

現在の位置