Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

275
Views
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 answers
Answer question

0

usar addEventListener

 root.addEventListener("click", function(e) { var clickedOn=$(e.target); });
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!