У меня есть одностраничное приложение (SPA) с функцией поиска, где я пытаюсь отслеживать, как пользователи взаимодействуют с панелью поиска в Adobe Analytics. Если я перейду к 5 различным «страницам» моего SPA, следующий код вызовет событие 6 раз. Кажется, addEventListener
устанавливается, но не сбрасывается, если поиск не выполняется на «странице». Эти EventListeners, по сути, ставятся в очередь каждый раз, когда загружается «страница», и, как только поиск введен, все они запускаются одновременно, освобождая очередь.
Как я могу очистить eventListeners, если поиск НЕ выполняется и запускать это событие можно только после того, как поиск выполнен нажатием клавиши ввода?
Предположим, у меня есть код:
clearInterval(interval);
var interval = setInterval(function(){
if (document.querySelector("form div[data-autoid='search_bar'] input")) {
inputField = document.querySelector("form div[data-autoid='search_bar'] input")
inputField.addEventListener('keydown', searchEntered)
clearInterval(interval);
}
}, 500);
function searchEntered(e) {
if (e.key == "Enter") {
console.log("search entered");
var event = new CustomEvent('searchEntered');
dispatchEvent(event);
}
}