<header>
  <h2 class="title">Event -> eventPhase</h2>
  <p class="description">Визначає фазу обробки події: захоплення, цільову або спливання</p>
</header>
<main>
  <div class="result">
    <div id="outer" class="box">Зовнішній блок
      <div id="inner" class="box">Внутрішній блок</div>
    </div>
    <p id="phaseInfo">Натисніть на блоки, щоб побачити фазу події.</p>
  </div>
</main>
body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

.box {
  border: 2px solid #3498db;
  padding: 20px;
  margin: 10px;
  text-align: center;
  cursor: pointer;
}

#phaseInfo {
  margin-top: 20px;
  font-weight: bold;
  color: #333;
}
const outerBox = document.getElementById('outer');
const innerBox = document.getElementById('inner');
const phaseInfo = document.getElementById('phaseInfo');

// Додавання слухачів для обох елементів з різними фазами обробки
outerBox.addEventListener('click', function(event) {
  showEventPhase('Зовнішній блок', event);
}, true); // Захоплення

outerBox.addEventListener('click', function(event) {
  showEventPhase('Зовнішній блок', event);
}, false); // Спливання

innerBox.addEventListener('click', function(event) {
  showEventPhase('Внутрішній блок', event);
}, true); // Захоплення

innerBox.addEventListener('click', function(event) {
  showEventPhase('Внутрішній блок', event);
}, false); // Спливання

// Функція для відображення фази обробки події
function showEventPhase(element, event) {
  let phase;
  if (event.eventPhase === 1) {
    phase = 'захоплення';
  } else if (event.eventPhase === 2) {
    phase = 'цільова';
  } else if (event.eventPhase === 3) {
    phase = 'спливання';
  }
  phaseInfo.textContent = `${element} у фазі ${phase}`;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.