2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javascriptのイベント制御

Last updated at Posted at 2025-02-25

参考にさせていただいた記事
https://developer.mozilla.org/ja/docs/Learn_web_development/Core/Scripting/Events

学習トピックの整理

JavaScriptにおけるイベント制御

① イベントの基本

  • イベントとは何か?
  • イベントの種類
  • イベントの登録方法

② イベントの実行フロー

  • イベントの伝播(キャプチャリング、ターゲット、バブリング)
  • イベントの委譲(イベントデリゲーション)

③ イベントオブジェクト

  • イベントオブジェクトの構造
  • e.target vs e.currentTarget
  • preventDefault() / stopPropagation() の活用

④ イベントのデフォルト動作

  • デフォルト動作とは?
  • preventDefault() による制御
  • 具体的なデフォルト動作の例

イベントの基礎

イベントとは何か?

ユーザー操作やページ読み込みなど、処理の実行の起点となる出来事を指します。
イベントが発生すると、ブラウザーがシグナルを発し、対応するコード(イベントハンドラー)が実行される仕組みです。


イベントの発生時のフロー

  1. イベントオブジェクトの生成

    • イベントが発生すると、ブラウザーは event オブジェクトを生成。
    • event オブジェクトには、発生源(e.target)やキーコードなどの情報 が含まれる。
  2. キャプチャリングフェーズ

    • DOMツリーのルート要素 から ターゲット要素(e.target に向かって イベントが伝播する
    • これを 「キャプチャリングフェーズ」 と呼ぶ。
  3. ターゲットフェーズ

    • e.target(イベントが発生した要素)に到達
    • 登録された イベントリスナーのコールバック関数が実行 される。
  4. バブリングフェーズ

    • e.target からルート要素に向かって、イベントが逆方向に伝播
    • これを 「バブリングフェーズ」 と呼ぶ。

イベントの伝播と実行条件

イベントハンドラーが実行される条件

 伝播経路にある要素
 イベントリスナーの typeevent.type が一致
 適切なフェーズで登録されている(capture or bubble

  • addEventListener() のデフォルト設定では バブリングフェーズ で実行される。
  • キャプチャリングフェーズ で実行するには addEventListener(type, callback, true)true を指定する。
  • バブリングを活用して、親要素で子要素のイベントを一括管理する手法「イベントの委譲(Event Delegation)」 と呼ぶ。(パフォーマンス向上)

イベントオブジェクトの主なプロパティ

プロパティ 説明
type 発生したイベントの種類(例: click, keydown
target イベントが発生した最も深い階層の要素(例: div 内の button をクリック → e.target === button
currentTarget 現在のイベントリスナーが登録されている要素(バブリング・キャプチャリングの際に変化する)
preventDefault() デフォルト動作をキャンセル(例: <a> の遷移を防ぐ)
stopPropagation() イベントの伝播をストップ(親要素へのバブリングを防ぐ)

イベントのデフォルト動作

デフォルト動作とは?

ブラウザーは、特定のHTML要素とイベントの組み合わせに対して、あらかじめ決められた動作を実行します。

デフォルト動作の例

要素 イベント デフォルト動作
<a> click ページ遷移
<form> submit フォーム送信
<input type="text"> keydown テキスト入力
<button> click type="submit" の場合、フォーム送信
<body> contextmenu 右クリックメニュー表示

デフォルト動作の決定要素

  要素の種類(フォーム、リンクなど)
  イベントの種類(click, submit, contextmenu など)
  preventDefault() の有無
  ブラウザーの仕様

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?