Webブラウザのオブジェクト
イベント駆動型プログラミング
イベントとは「ボタンがクリックされた」などのユーザーの操作に応じて発生する信号のようなもの。
このようなイベントに対して任意のJavaScriptを実行できる。
これはGUIを伴うアプリケーションでは一般的な手法でイベント駆動型プログラミングモデルと呼ばれている。
JavaScriptでイベント処理には2つの方法がある。
- HTMLタグのイベントハンドラ属性を利用する。
- JavaScriptでHTML要素に対応するオブジェクトにイベントリスナを設定する。
HTMLタグのイベントハンドラ属性を利用する
イベント処理をscript要素や外部ファイルに関数として定義しておき
イベントハンドラ属性には関数を呼び出すコードを記述する。
<script type="text/javascript"> function showDialog(){ alert('ボタンがクリックされました'); } </script> <input type="button" value="クリック" onclick="showDialog()"/>
JavaScriptによるイベントリスナの登録
HTMLタグはHTMLタグのイベントハンドラ属性に対応したプロパティをもっていて
このプロパティに関数を設定することでイベントに対しての処理を行なえる。
この関数のことをイベントリスナとよぶ。
<!-- id="button1"の要素のonclickプロパティにダイアログを表示する --> <input type="button" value="クリック" id="button1"> <script type="text/javascript"> //クリック時に呼び出される関数 function showDialog(){ alert('hello'); } //document.getElementById()は引数で指定したid属性を持つ要素を取得する //onclickイベントにイベントリスナを登録 var button=document.getElementById('button1') button.onclick=showDialog; </script>
イベントリスナを登録するタイミング
イベントリスナを登録するJavaScriptコードが実行される時点ではまだHTMLの解釈がすんでいない。
そのため存在しない要素に対してイベントリスナを登録することになりエラーが発生する。
これはイベントリスナを登録する要素よりも後にJavaScriptを記述することで回避できる。
外部ファイルにJavaScriptをまとめる場合などは、Windowオブジェクトのonloadイベントハンドラを使ってイベントリスナを登録する。
window.onload=function(){ document.getElementById('button').onclick=listener; }
HTMLタグのイベントハンドラ属性
属性名 | 呼び出されるタイミング |
---|---|
onclick | クリックされたとき |
ondbclick | ダブルクリックされたとき |
onmousedown | マウスのボタンがクリックされたとき |
onmouseup | マウスのボタンを離したとき |
onmouseover | マウスが要素上に移動したとき |
onmouseout | マウスが要素上から外れたとき |
onmousemove | マウスが要素内で移動したとき |
onchange | フォーム内の要素について値が変更されたとき |
onblur | フォーム内の要素についてフォーカスが外れたとき |
onfocus | フォーム内の要素についてフォーカスが当たったとき |
onkeydown | キーを押したとき |
onkeypress | キーを押して離したとき |
onkeyup | キーを離したとき |
onselect | テキストフィールドやテキストエリアでテキストが選択されたとき |
onsubmit | フォームが送信される前 |
onreset | フォームがリセットされる前 |
onload | webページがロードされるとき |
onunload | webページがアンロードされるとき |