DOMおれおれAdvent Calendar 2015 – 21日目
イベント監視のコールバックでもらえるeventオブジェクト、色々使えます。
target
でイベント発生要素
あと currentTarget
で監視対象要素、 relatedTarget
で関連要素。
過去記事をどうぞ。
type
でイベントの種類
例えば click
イベントを監視していたら event.type
は "click"
になります。複数のイベント監視を同じコールバック関数で行う場合に利用できます。
var listener = function(event) { console.log(event.type); }; el.addEventListener('focus', listener); el.addEventListener('click', listener);
マウス操作とタッチ操作をある程度同一視しつつ一部違う処理、なんてときに便利かもしれません。あとは諸々のイベントを監視してログ取ってるときとか。
timeStamp
イベント発生日時の数字です。
だいたい Date.now()
と同じくらいになるかと思います。 new Date(event.timeStamp)
してやるとDateオブジェクトになります。
Firefoxでバグってる
なんか変な数字が返ってきます。
『11年くらいバグってる』そうです。まじかよ。
内容が変わるっぽい
Dateと同じミリ秒単位の数字が設定されてたんですが、最近この値をページ読み込み時を起点としたマイクロ秒単位の値になりそうな流れです。
defaultPrevented
でキャンセル済みか確認
preventDefault()
されると true
になります。
el.addEventListener('click', function(event) { console.log(event.defaultPrevented); // => false event.preventDefault(); console.log(event.defaultPrevented); // => true });
eventPhase
でイベント発火の段階を知る
状態 | 定数 |
---|---|
未発火 | Event.NONE |
キャプチャ中 | Event.CAPTURING_PHASE |
対象要素 | Event.AT_TARGET |
浮上中 | Event.BUBBLING_PHASE |
「キャプチャ中」てのはあれです、 addEventListener()
の第三引数で true
を指定した時のあれです。
あとIEは Event.NONE
を持ってないみたい。
その他
だいたいよくわかってない。
bubbles
… 浮上し得るかどうか。コールバック関数に与えられるものは全部true
? 新規作成したオブジェクトだとfalse
cancelable
…preventDefault()
でキャンセルできるか。したか、じゃない。isTrusted
… 利用者操作からのイベントであるか。JavaScriptが作成したEventオブジェクト等だとfalse