Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

282
Vistas
Shadowroot: no obtener el objetivo correcto para el detector de eventos

Tengo una página web con un modal con un menú desplegable personalizado debajo de un shadowroot de la siguiente manera:

 <div id="main"> #shadow-root <div class="modal fade in" id="sample-modal"> <div class="modal-dialog modal-xl" role="dialog" aria-hidden="true"> <div class="modal-content"> <div class="modal-header"> <h6 class="modal-title" style="font-size:0.85rem" id="download-modal-label">Modal Title</h6> </div> <form onsubmit="return false;"> <div class="modal-body" id="modal-body" style="overflow: inherit !important"> <div class="dropdown"> <button onclick="myFunction()" class="dropbtn">Dropdown</button> <div id="myDropdown" class="dropdown-content"> <input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()"> <a href="#about">About</a> <a href="#base">Base</a> <a href="#blog">Blog</a> </div> </div> </div> </form> </div> </div> </div>

Para esto, quiero agregar un detector de eventos donde si hago clic en cualquier lugar además del menú desplegable, escondo el div desplegable. Para esto, agregué el detector de eventos de la siguiente manera:

 let root = document.getElementById("main").shadowRoot; $(root).on("click", function(e) { var clickedOn=$(e.target); });

Pero esto no parece funcionar en absoluto. Intenté adjuntar el detector de eventos de clic al documento para verificar el objetivo del evento de la siguiente manera:

 $(document).on("click", function(e) { var clickedOn=$(e.target); });

Este detector de eventos se activa, pero el elemento de destino 'e' se muestra como <div id="main"> independientemente de si hago clic en cualquier elemento, incluido el elemento desplegable debajo del modal. ¿Cómo agrego el detector de eventos donde obtengo el elemento correcto debajo de shadowRoot en el que se hizo clic con el detector de eventos 'clic'?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

usar addEventListener

 root.addEventListener("click", function(e) { var clickedOn=$(e.target); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda