Estoy usando la barra de desplazamiento simple (SSB), que agrega envoltorios alrededor de mi contenido de desplazamiento en la carga de la página. Y necesito adjuntar un detector de eventos, que funcionaría en el desplazamiento.
Sin SSB un simple
document.querySelector(".element").parentNode.addEventListener('scroll', handler); funcionó Pero ahora no funciona, ya que el .parentNode correcto aún no existe, SSB lo agregará más adelante en segundo plano (no sé cuándo, no sé cómo y no tengo control sobre él) ).
¿Cómo adjunto el controlador de desplazamiento al elemento creado dinámicamente (no por mí)?
Con un evento de clic, uso una función como esta
function addPostponedEventListener(selector, eventName, handler) { document.addEventListener( eventName, e => { const el = e.target; if (el.closest(selector)) { handler(); } } ) } addPostponedEventListener('.element', 'scroll', handler);pero solo funciona con burbujeo, y el burbujeo parece estar deshabilitado para el evento de desplazamiento, por lo que no funciona.
Gracias a esta respuesta pude hacerlo:
function addPostponedEventListener(selector, eventName, handler) { let interval = setInterval(() => { let el = document.querySelector(selector); if (el) { el.addEventListener(eventName, handler); clearInterval(interval); } }, 100); }