目次:
【第13回】JavaScript 3 (イベント検出、マルチメディア情報の応用、プログラミングTIPS) 第1章
--イベント処理
第3章
|
現在の場所: ホームページ > [3]JavaScriptによる動的Webページ > 【第13回】JavaScript 3 (イベント検出、マルチメディア情報の応用、プログラミングTIPS)
> 第2章 > イベント処理
イベント処理
【本節の目的】
前節で説明しましたように、 イベント処理を行うことがJavaScriptを用いる最大の目的ですので、 本章では、イベント処理のポイントとなるところを復習します。 イベントにはどんなものがあるの?JavaScriptで取り扱うことのできる(ハンドルできる)イベントには、 沢山の種類がありますが、まずは、 以下に示す4つのイベントハンドラを使うことができれば十分でしょう。 onClick → 「指定された領域でマウスがクリックされた時に、 指示された処理を行なう」onMouseOver → 「マウスポインタが指定された領域内にある時に、 指示された処理を行なう」onMouseOut → 「マウスポインタが指定された領域外にある時に、 指示された処理を行なう」onLoad → 「そのページがブラウザに読み込まれたときに、 指示された処理を行なう」他のイベントについて調べたいときは、 JavaScriptで取り扱うことのできるイベントの一覧が、 こちら にありますので、参照して下さい。 HTMLでもイベント処理をしていた!これまで、コメントしていませんでしたが、実は、 皆さんの知っているHTMLでもイベント処理をしていたものがあります。 わかりますか?それは、<a>タグです。 このタグを、始めて使ったときの感動を思い出しませんか? 始めのうちは、「タグを書かなければ文章が作れないなんて、 面倒臭いなあ。ワープロならメニューから選ぶだけなのに。」 と思いながらHTMLの勉強をしていたと思います。 ところが、<a>というタグが、 簡単な記述でボタン(のようなもの)が作れ、 そのボタンを押すと別のページへジャンプできるということを知ると、 何か別世界に来たような、そんな気分になりませんでしたか? 実は、これはイベント処理の賜(たまもの)なのです。 例えば、自分が作成するWebサイトにインコのピッピのWebページ(html)があるとして、 <a href="./pippi.html"> インコのページへ </a>
について考えてみましょう。
この、2番目と3番目の項目が、イベント処理になっていることに気づくでしょ う。
2番目の項目では、「マウスポインタが、指定された領域内にある」
というイベントが発生したら、
「マウスポインタの画像を「指の画像」に変化させる」
という処理を行なっています。
3番目の項目も、同様です。 このため、タグ<a>の動作は、 「リンク(ボタン)をクリックすれば、別のページへジャンプする」という ページを見た人のマウス操作で決まることになります。 もし、リンクをクリックしなければ、そのページのままですよね。 タグ<a>がイベント処理を含んでいると言うことが、他のタグと根本的 に動作が異る(動きがある)ゆえんであり、 我々に感動を与えてくれるゆえんだったです。 <a>タグで別のイベント処理をしようただし、これまでは、 <a>タグが最初からもっているイベントハンドラの機能だけを使っていました。それでも、十分感動ものなのですが、JavaScriptを使うと、 同じイベントでも、別の処理を指定したり、 別のイベントによって、処理を指定したりすることができます。 まずは、次の文を見て下さい。 <a href="#" onClick="alert('ごめんなさい。')"> インコのページへ </a> 先の例と比べてみると、2箇所が変わっています。
まずは、「href="#"」です。 <name="anogyo"> . .
のように、同じページ内のどこかへジャンプするときの機能を利用しています。
ただ、'name'で定義されていない場所へのジャンプは、
先頭へのジャンプということになります。
このように、イベントハンドラは、 「イベントハンドラ」というオブジェクトに、 その値として「指示する処理」を '=' で設定することにより、 動作を規定するということになります。
ということで、上記の文は、<a>タグを使っているのに、
「インコのページへ」をクリックすると、
別のページを表示せずに、
「ごめんなさい」という文字の書かれたダイアログが表示されます。 ところで、href="#"の所を、 以下のように通常のリンクに変えてみたらどうなるでしょう?
<a href="http://www.kumamoto-u.ac.jp/"
onClick="alert('ごめんなさい。')"> 今度こそ、インコのページへ </a>
わかりますか?動作を予想してみて下さい。
予想通りでしたか? <a>タグで自由にイベント処理をしよう (onMouseOverを例に)
前の例では、<a>タグで、「リンク先にジャンプする」
という本来のイベント処理の代わりに、
「アラート・ダイアログを表示する」
という、新しい処理の指定方法を示しました。 それには、別のイベントハンドラを使うことで解決できます。 次の文を見て下さい。 <a href="#" onMouseOver="alert('ごめんなさい。')"> 絶対、インコのページへ </a> これは、イベントハンドラを 'onMouseOver' に変更しただけです。 これは、 「マウスポインタが指定された領域内にある時に、指示された処理を行なう」 イベントハンドラですが、上記の例では、 マウスポインタが「絶対、インコのページへ」にある時に、 'ごめんなさい'のダイアログを開く事になります。 実際に下のリンク(らしき)所に、マウスポインタを移動させると、 ダイアログが開くことが確認できます。
この場合、リンク(らしき)所をクリックすることはできません。
(どうでも良い註) 本当は、裏技を使えばクリックできますよ。
どうしても知りたい人は
ここを見て下さい。
例えば、以下がその例です。 <script type="text/javascript"> <!-- function myalert() { alert('ごめんなさい。'); alert('やっぱり、インコのページにはジャンプできません。'); } //--> </script> <a href="#" onMouseOver="myalert()"> きっと無理だろうけど、インコのページへ </a>
<script>タグの中が、自分で作ったメソッド(処理)です。 function 自分の好きなメソッド名(引数1, 引数2, ...) { 処理1; 処理2; . . }
上の例では、'myalert'という名前で、メソッドを定義しています。 ブラウザには、「きっと無理だろうけど、インコのページへ」 だけが表示されます。 その表示されている文字のところにマウスポインタをもって行くと、 'onMouseOver' イベントハンドラが、イベントを検知し、 myalert()が実行されます。
予想通りの動作をしましたか? |