0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript基礎】ユーザー操作時に発生するイベントについて

Last updated at Posted at 2021-04-17

JavaScriptにおける__「ユーザー操作に合わせて発生するイベント」について__、自己の忘備録としてまとめています。

参考URL

参考著書

ウェブ上には、多くの__イベント__があります。

  • クリック
  • タップ
  • スクロール
  • 画像読み込み完了
    など

JavaScriptではそれらのイベントに合わせて処理を実行させることができます。

###イベント発生時に処理を設定する

イベントに合わせて処理を実行させる際は、__addEventListner()__メソッドを使うとイベントを制御することができます。

イベントを発生させるオブジェクトのことを__「イベントターゲット」と呼び、
「イベントターゲット」でイベントが発生したときの処理を
「イベントリスナー」__と呼びます。

addEventLister()のオプション

イベントリスナーを設定する際、addEventLister()メソッドの第3引数にオプションを指定することができます。

オプション 意味
capture キャプチャリングフェーズで取得するか 真偽値
once イベントリスナーの呼び出しを1回のみにするか 真偽値
passive パッシブイベントかどうか 真偽値

例えば、イベントリスナーを1度だけ呼び出したい時は、onceにtrueを設定します。

// オプション指定
const options = {
    once: true,
};

const btn = document.querySelector('.button');
const onClickButton = () => {
    console.log('ボタンがクリックされました!');
};

btn.addEventListener('click', onClickButton, option);

__キャプチャリングフェーズ__や__パッシブイベント__については、自分自身知らない概念だったので、下記に参考リンクだけ記載しておきます。

キャプチャリングフェーズについて

イベントの伝搬(キャプチャリングとバブリング

パッシブイベントについて

passive: trueでなぜパフォーマンスがよくなるの?簡単な説明と使い方!

設定したイベントを削除する

設定したイベントを削除する場合は、__removeEventListner()__メソッドを使用します。

const btn = document.querySelector('.button');
const onClickButton = () => {
    console.log('ボタンがクリックされました!');
};

btn.addEventListener('click', onClickButton);

//3秒後にイベントを削除する
setTimeout(() => {
    btn.removeEventListener('click', onClickButton);
}, 3000);

ページが表示された時に処理をする

JavaScriptでDOMを操作できるのは、HTMLドキュメントの読み込みと解析が完了したタイミングです。このタイミングで発生するのが、__DOMContentedLoadedイベント__です。

__loadイベント__は、ページ内の全リソース(画像、音声、動画など)の読み込み完了時に発生します。そのため、__DOMContentedLoadedイベント__によりもタイミングが遅くなります。

イベント名 発生タイミング
DOMContentLoaded HTMLドキュメントの解析完了時
load 全リソースを読み込み完了時

__「ページが表示されたいタイミングで操作をしたい」__といった場合、大抵DOMContentedLoadedを使う方が適しています。

scriptタグのdefer属性とDOMContentedLoadedについて

scriptタグにdefer属性を設定してJavascriptを読み込むと、スクリプトはHTMLの解析終了後に実行されます。これは__DOMContenedLoadedの発生前__であるため、defer属性を設定している場合はDOMContentedLoadedによるイベント設定は不要だと考えられます。

0
2
0

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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?