Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web APIs
  3. Event
  4. eventPhase

Event: eventPhase property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨July 2015⁩.

Note: This feature is available inWeb Workers.

TheeventPhase read-only property of theEvent interface indicates which phase of the event flow is currentlybeing evaluated.

Value

Returns an integer value which specifies the current evaluation phase of the eventflow. Possible values are:

Event.NONE (0)

The event is not being processed at this time.

Event.CAPTURING_PHASE (1)

The event is being propagated through the target's ancestor objects.This process starts with theWindow, thenDocument,then theHTMLHtmlElement, and so on through the elementsuntil the target's parent is reached.Event listenersregistered for capture mode whenEventTarget.addEventListener() wascalled are triggered during this phase.

Event.AT_TARGET (2)

The event has arrived atthe event's target.Event listeners registered for this phase are called at this time. IfEvent.bubbles isfalse, processingthe event is finished after this phase is complete.

Event.BUBBLING_PHASE (3)

The event is propagating back up through the target's ancestors in reverse order,starting with the parent, and eventually reaching the containingWindow.This is known asbubbling, and occurs only ifEvent.bubbles istrue.Event listeners registered for this phase are triggered during this process.

Example

HTML

html
<h4>Event Propagation Chain</h4><ul>  <li>Click 'd1'</li>  <li>Analyze event propagation chain</li>  <li>Click next div and repeat the experience</li>  <li>Change Capturing mode</li>  <li>Repeat the experience</li></ul><input type="checkbox" /><label for="chCapture">Use Capturing</label><div>  d1  <div>    d2    <div>      d3      <div>d4</div>    </div>  </div></div><div></div>

CSS

css
div {  margin: 20px;  padding: 4px;  border: thin black solid;}#divInfo {  margin: 18px;  padding: 8px;  background-color: white;  font-size: 80%;}

JavaScript

js
let clear = false;const divInfo = document.getElementById("divInfo");const divs = document.getElementsByTagName("div");const chCapture = document.getElementById("chCapture");chCapture.addEventListener("click", () => {  removeListeners();  addListeners();  clearDivs();});clearDivs();addListeners();function removeListeners() {  for (const div of divs) {    if (div.id !== "divInfo") {      div.removeEventListener("click", onDivClick, true);      div.removeEventListener("click", onDivClick, false);    }  }}function addListeners() {  for (const div of divs) {    if (div.id !== "divInfo") {      if (chCapture.checked) {        div.addEventListener("click", onDivClick, true);      } else {        div.addEventListener("click", onDivClick, false);        div.onmousemove = () => {          clear = true;        };      }    }  }}function onDivClick(e) {  if (clear) {    clearDivs();    clear = false;  }  if (e.eventPhase === 2) {    e.currentTarget.style.backgroundColor = "red";  }  const level =    ["none", "capturing", "target", "bubbling"][e.eventPhase] ?? "error";  const para = document.createElement("p");  para.textContent = `${e.currentTarget.id}; eventPhase: ${level}`;  divInfo.appendChild(para);}function clearDivs() {  for (let i = 0; i < divs.length; i++) {    if (divs[i].id !== "divInfo") {      divs[i].style.backgroundColor = i % 2 !== 0 ? "#f6eedb" : "#cceeff";    }  }  divInfo.textContent = "";}

Result

Specifications

Specification
DOM
# ref-for-dom-event-eventphase③

Browser compatibility

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp