SunMicrosystems社が開発したプログラミング言語Javaを参考にNetscape社が開発したオブジェクト指向言語でHTML内に記述することができます。
基本にJavaがあるため似た部分がありますが、JavaとJavaScriptは別物と考えてください。JavaScriptはJavaと違いコンパイルする必要が無く、HTML文書内に記述しブラウザが読み込むことにより実行させることができます。
JavaScriptは、JavaScriptはNetscapeNavigator2.0〜、InternetExporer3.0〜で実行可能です。
JavaScriptを使用することでWebページを動的に変化させたり、CGIなどで行なっていた処理の一部をWebページ上で行うことができるようになります。
現在公開されているJavaScriptのバージョンはJavaScript1.0〜JavaScript1.5で各バージョンによりブラウザの対応も違っています。
バージョンアップで使用できるオブジェクトの種類が追加されていたり、文字コードの扱いが変更されたりしているためNetscapeNavigator2.0〜、InternetExporer3.0〜でも実行させたい場合はJavaScript1.0で記述する必要があります。
このページで紹介するJavaScriptのソースコードは基本的に画像を扱うImageオブジェクトがサポートされたJavaScript1.1からブラウザではNetscapeNavigator3.0〜、InternetExporer3.0〜に対応したコードを紹介していきます。ブラウザの対応状況はその都度明記しますので注意してください。
JavaScriptはHTMLファイル内にHTMLタグ<script></script>を使い、language属性で"JavaScript"と指定すると、ブラウザは<script></script>タグ内の文字列をJavaScriptと認識して実行します。
language属性で"JavaScript1.2"と指定するとJavaScript1.2に未対応のブラウザで見たときはスクリプトが実行されません。
これで未対応ブラウザで見たときのエラーを防ぐことができます。
下の例はJavaScript1.2のソースの記述方法です。
HTML4.0ではlanguage属性は非推奨となっているため、Type属性で指定しなければなりません。
Type属性での指定は下のようになります。
HTML4.0では<head></head>内に<meta>タグを使ったスクリプト言語の指定も必要です。
language属性と違いType属性ではバージョン情報の指定がうまく行なえないという問題点が出てきます。例えばType属性でversion1.2と指定してもlanguage属性のようにブラウザの対応状況に応じてスクリプトの実行を制御することができません。本来ブラウザで実行できるはずのスクリプトが実行できないという事もおこります。ですからHTML4.0の仕様からは外れてしまいますがlanguage属性でバージョン指定したほうが未対応ブラウザで見た場合のエラーの回避には有効です。
Mozilla、NetscapeNavigator6.XはHTML4.0の仕様になっているためスクリプトの指定はType属性を使用してください。
<noscript></noscript>を使用して記述します。
<script></script>外にJavaScriptを使用している旨を記述しておくとJavaScriptに未対応または無効にしているブラウザへのメッセージとして表示されます。
JavaScriptに対応しているブラウザでは<noscript>は無視されます。
文の区切りには「;」を使用します。JavaScriptは基本的に自動で文の区切りを判断しますので、処理に問題はありませんがソースを見易くするためにも「;」で区切っておきましょう。
JavaScriptのコメントの記述方法は2通りあります。
「//」を記述したあとの1行はコメントとして扱われます。
「/*〜*/」に挟まれた文字列はコメントとして扱われます。
JavaScriptではブラウザの機能や情報をオブジェクトとして扱い、このオブジェクトの値を変更したり値を調べて処理を変更することによってブラウザの表示を動的に変化させることが可能です。
JavaScriptのオブジェクトにはナビゲータオブジェクトとビルトインオブジェクトの2種類があります。
各オブジェクトは多くの属性を持っています。この属性をプロパティと呼びプロパティもまたオブジェクトです。
JavaScriptではプロパティはオブジェクトの後に「.」で区切って指定します。
またプロパティの中にはユーザー自身が値を設定できるものもあります。値を設定する場合はプロパティの後に「=値」と指定します。
オブジェクトに対して動作を指定するものをメソッドと呼びます。
メソッドはオブジェクトの後に「.」で区切って指定します。オブジェクトに対して値を指定する場合は()内に値を指定指定します。
ユーザーやスクリプトがページをロードしたり、オブジェクトがクリックされたり特定の動作が発生したタイミングをイベントといい、JavaScriptはこのイベントの発生を取得してスクリプトの実行を行なう事ができます。
このイベントを取得するものをイベントハンドラと呼びます。イベントハンドラの設定はイベントハンドラが設定可能なオブジェクトのHTMLタグ内に記述します。
一連の処理に名前をつけたものを関数と呼びJavaScriptでは処理の定義をする関数と関数を呼び出す関数の二つからできています。
通常、HTMLでは関数の定義が終了するまでに関数が呼び出されるのを防ぐために<head>内で関数の定義を行い、<body>内で関数の呼び出しを行ないます。
JavaScriptにはオブジェクトに依存せず、スクリプトのどこからでも使用することが可能なビルトイン関数というものがあります。
ビルトイン関数はJavaScriptで始めから定義されている関数のことです。
変数は値を入れる箱のようなもので、数値、文字列、オブジェクト、メソッド、プロパティ、式などを設定します。
同じ変数でも値を変化させることで変数の値は絶えず変化するのに対し、変数に代入する値の方は変化することはありません。
そのため変数に代入する値の方を定数(リテラル)と呼びます。
ユーザーが自由に名前を付けれるのは、オブジェクト名、関数名、引数名、変数名、定数名です。
但し、名前を付けるには条件があり その条件を満たしていればどんな名前でも自由につけることができます。