Section 7 : スクリプティング(1)

 WWW ページは CGI でもない限りスタティックなものであるという観念はスクリプティングによって破られる。これを有効に活用することでページの表現力・サービス・アクセシビリティが大きく高まるだろう。

スクリプトとは

 スクリプトには“台本”という意味がある。台本によってページが変化するのである。スクリプトはサーバ側で実行されるものとブラウザ(クライアント)側で実行されるものとがあるが,ここで扱うのは後者で,とくにクライアントサイドスクリプトと呼ばれる。以下,断らない限り,これを単にスクリプトと呼ぶことにする。ブラウザが状況に応じて異なった処理ができるような簡単なプログラミング言語のことと思って差し支えない。

 スクリプト言語として知られているのは,JavaScriptVisual Basic Scripting Edition(以下,VBScript),Tcl などである。

JavaScript
Netscape Navigator 2.0 から採用された。Java,C 言語スタイルの記述が特徴的。事実上の標準である。規格としての名称は,ECMAScript である。
VBScript
Microsoft 社の Visual Basic を元にしたスクリプト言語で,Basic 言語の明快な文法規則が特徴。JavaScript よりとっつきやすいかも知れないが,Internet Explorer のみ対応。
Tcl
UNIX の C 言語スタイル sh スクリプトと似た記述が特徴的。

これらのスクリプト言語の特徴は,動作が軽快であること(ややこしい概念や機能はサポートされていないことが多い),セキュリティに問題が生じるような動作(ファイル入出力など)はできないようになっていることである。

<SCRIPT>

 スクリプトを記述するための要素が

<SCRIPT>...</SCRIPT>

である。この中に記述するわけだが,そのスクリプトについて前もって属性で指定しておく必要がある。

<SCRIPT> の属性
属性 解説
TYPE MIME タイプ スクリプト言語の MIME タイプ。必須
SRC URI スクリプトが外部ファイルとしてある場合,それを指し示す URI。
DEFER ブール値 スクリプト中に文書を書き換える記述がないことを宣言し,それによってスクリプト実行中に HTML の表示を続けるようブラウザに促す。

ここで断っておくと,ブール値を与える DEFER 属性は本来は DEFER="defer" と与えるべきなのだが,省略して DEFER属性値のみを書く。“ブール値”を与える属性はすべてこの要領で,属性値が書かれたら yes,書かれなければ no を表す。

 XHTML ではこの記法は許されない。かならず defer="defer" のように書く必要がある。ただし,この“正式な”記法をサポートしないブラウザもある。

 <SCRIPT>...</SCRIPT> はヘッダ・本文のいずれにも含めてよい。ふつう,ヘッダ中に関数(プロシージャ)を定義して,本文中から呼び出すということがされる。この方法では,スクリプトがファイル中に分散しないのでデバッグ(プログラムの誤りの修正)がやりやすい。

 いっぽう,スクリプトに対応していないブラウザのための記述もしておく必要がある。

<NOSCRIPT>...</NOSCRIPT>

 これは,スクリプト対応ブラウザがスクリプトを実行したときは無視され,スクリプト未対応ブラウザまたはスクリプト対応ブラウザがスクリプトを有効としなかったときにその内容が代わりに表示される。中には直接文章を書かずに,<P> などを経て書く。表示されるとき,前後は改行される。

スクリプトの MIME タイプ

 スクリプトを記述するのに,まず <SCRIPT> の TYPE 属性にスクリプト言語の MIME タイプ(ここではデータの種類と考えていただいてもよい)を与えなければならない。先ほどあげた 3 種類の言語には次のような MIME タイプを与える。

スクリプト言語の MIME タイプ
スクリプト言語 MIME-タイプ
JavaScript text/javascript
VBScript text/vbscript
Tcl text/tcl

 また,Try next HTML の Section 13 で紹介した <META> を使って,おもに使用するスクリプト言語を宣言するとよい。

<META HTTP-EQUIV="Content-Script-Type" CONTENT="(MIME タイプ)">

 たとえば,JavaScript をおもに使うといった場合には,

<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">

とヘッダ部分に書き込めばよい。