JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

События в браузере

Тест проверяет распространение событий, делегирование, различия target и currentTarget, отмену стандартного действия и устойчивое управление подписками. Здесь недостаточно помнить названия методов: нужно предсказать точный маршрут события и выбрать решение, которое не сломается после изменения разметки.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
В каком порядке выведутся обработчики при клике по button?
JavaScript
outer.addEventListener("click", () => console.log("outer bubble"));
outer.addEventListener("click", () => console.log("outer capture"), true);
button.addEventListener("click", () => console.log("button"));
Вопрос 2 из 25
Что изменит stopPropagation в первом обработчике кнопки?
JavaScript
button.addEventListener("click", e => {
  console.log("first");
  e.stopPropagation();
});
button.addEventListener("click", () => console.log("second"));
document.addEventListener("click", () => console.log("document"));
Вопрос 3 из 25
Какой вывод даст stopImmediatePropagation?
JavaScript
button.addEventListener("click", e => {
  console.log("A");
  e.stopImmediatePropagation();
});
button.addEventListener("click", () => console.log("B"));
document.addEventListener("click", () => console.log("D"));
Вопрос 4 из 25
Событие focus не всплывает. Как слушать фокусировку полей на общем контейнере?
Вопрос 5 из 25
Почему бездумный stopPropagation внутри виджета может стать архитектурной проблемой?
Вопрос 6 из 25
Почему этот обработчик не всегда находит действие при клике по значку внутри кнопки?
JavaScript
toolbar.addEventListener("click", event => {
  const action = event.target.dataset.action;
  run(action);
});
Вопрос 7 из 25
Какой вариант устойчив к клику по вложенному элементу и не принимает кнопку из чужого вложенного списка?
JavaScript
list.addEventListener("click", event => {
  // Как получить кнопку текущего списка?
});
Вопрос 8 из 25
Будет ли делегирование работать для строки, добавленной после установки обработчика?
JavaScript
table.addEventListener("click", handleRowAction);
table.append(createRow(newItem));
Вопрос 9 из 25
Для какого события простое делегирование через всплытие не сработает так же, как для click?
Вопрос 10 из 25
Когда отдельные обработчики на элементах разумнее одного делегированного?
Вопрос 11 из 25
Что выведет код при клике по span внутри button?
JavaScript
const button = document.querySelector("button");
button.addEventListener("click", event => {
  console.log(event.target.tagName, event.currentTarget.tagName);
});
Вопрос 12 из 25
Как надёжнее обработать сочетание Ctrl/Command+S на разных настольных системах?
JavaScript
window.addEventListener("keydown", event => {
  // Когда вызвать saveDocument()?
});
Вопрос 13 из 25
Как отличить реальный выход указателя из карточки от перехода на её дочерний элемент при mouseout?
JavaScript
card.addEventListener("mouseout", event => {
  if (card.contains(event.relatedTarget)) return;
  closePreview();
});
Вопрос 14 из 25
Что показывает event.composedPath() в компоненте с Shadow DOM?
Вопрос 15 из 25
Почему event.isTrusted нельзя превращать в единственную проверку права на опасное действие?
Вопрос 16 из 25
Почему preventDefault не отменит прокрутку в passive-обработчике?
JavaScript
window.addEventListener("touchmove", event => {
  event.preventDefault();
}, { passive: true });
Вопрос 17 из 25
Что делает preventDefault у click по ссылке, если событие cancelable?
JavaScript
link.addEventListener("click", event => {
  event.preventDefault();
  openInPanel(link.href);
});
Вопрос 18 из 25
Какой способ программной отправки формы запускает обычную проверку ограничений и submit-событие?
Вопрос 19 из 25
Когда отмена submit на клиенте оправдана?
Вопрос 20 из 25
Что означает event.defaultPrevented в обработчике родителя?
Вопрос 21 из 25
Почему removeEventListener здесь не снимает подписку?
JavaScript
button.addEventListener("click", () => save());
button.removeEventListener("click", () => save());
Вопрос 22 из 25
Что даст опция once: true?
JavaScript
button.addEventListener("click", confirmOnce, { once: true });
Вопрос 23 из 25
Как одним действием снять несколько обработчиков компонента?
JavaScript
const controller = new AbortController();
button.addEventListener("click", onClick, { signal: controller.signal });
window.addEventListener("resize", onResize, { signal: controller.signal });
// cleanup: controller.abort();
Вопрос 24 из 25
После каждого открытия диалога кнопка срабатывает на один раз больше. Наиболее вероятная причина?
Вопрос 25 из 25
Как лучше проверить обработчик клавиатурной команды?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу