Web Vitals — это набор метрик, предназначенных для оценки качества
пользовательского опыта на веб-странице. Одним из ключевых аспектов
анализа является взаимодействие пользователя с элементами
интерфейса. Метрика First Input Delay (FID) и
её современный аналог Interaction to Next Paint (INP)
используют поле interactionTarget для точного определения,
на каком элементе произошло событие взаимодействия.
interactionTargetinteractionTarget — это свойство события, возвращаемого
функциями библиотеки Web Vitals. Оно указывает на
DOM-элемент, с которым пользователь взаимодействовал в
момент первого ввода. Полезно для аналитики, так как позволяет:
interactionTarget особенно актуально для метрики INP,
которая учитывает все взаимодействия пользователя, а не
только первое.
Поле interactionTarget возвращает объект типа
EventTarget, который обычно является
DOM-элементом, например:
buttonElement, inputElement, aElement
В большинстве случаев это объект HTMLElement, что позволяет работать с ним так же, как с любым стандартным элементом DOM:
const vitalsCallback = (metric) => {
if (metric.name === 'INP') {
const element = metric.entries[0].interactionTarget;
console.log('Элемент взаимодействия:', element.tagName, element.id);
}
};
Если взаимодействие произошло вне DOM (например, на документе или
body), interactionTarget может ссылаться на
document или window, поэтому всегда необходимо
проверять тип объекта перед дальнейшими манипуляциями.
FID (First Input Delay)
interactionTarget показывает элемент, с которым
пользователь пытался взаимодействовать.INP (Interaction to Next Paint)
interactionTarget, что позволяет создавать карты
задержек по элементам.Пример регистрации INP с определением элементов:
import { onINP } from 'web-vitals';
onINP((metric) => {
metric.entries.forEach((entry) => {
const element = entry.interactionTarget;
const elementId = element.id || 'без id';
console.log(`INP: задержка ${entry.duration}ms на элементе <${element.tagName} id="${elementId}">`);
});
});
Особенности и рекомендации:
id. Для аналитики полезно
использовать data-* атрибуты или классы.interactionTarget перед
использованием, чтобы избежать ошибок при взаимодействии вне DOM.entry.interactionTarget возвращает HTMLElement. Можно
получать его атрибуты, текст, родительские элементы.interactionTarget всё
равно указывает на элемент в момент взаимодействия, что позволяет
отследить проблемные зоны в интерфейсе.entry.interactionTarget для точного понимания, какой
дочерний элемент был активирован.Использование interactionTarget в связке с
аналитическими платформами позволяет:
interactionTarget является ключевым инструментом для
глубокого анализа взаимодействий пользователя, позволяя не только
фиксировать задержку, но и связывать её с конкретными компонентами
интерфейса для последующей оптимизации.