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

201
Vistas
Extensión de Chrome: no se puede usar `document.querySelector().click()` después de usar `document.getSelection()`

Mi extensión le permite ingresar o copiar texto de la página (usando document.getSelection() ) y luego intenta hacer clic en un botón usando document.querySelector y luego el evento de click .

Si ingreso el texto manualmente, todo funciona como se esperaba. Sin embargo, si pego el texto en la extensión usando getSelection , el evento de click se pierde.

Como referencia, esta es una versión abreviada de mi código:

 //content.js function messagesFromReactAppListener(msg, sender, sendResponse) { switch (msg.method) { case "getSelection": sendResponse({ text: document.getSelection().toString() }); break; case "replyToEmail": const replyBtn = document.querySelector(...); if (replyBtn) { replyBtn.click(); sendResponse(true); } else { sendResponse(false); } break; return true; }
 // paste function, called when button pressed on extension export function pasteText(): Promise<PasteTextRespType> { return new Promise((resolve) => { chrome.tabs && chrome.tabs.query( { active: true, currentWindow: true, }, (tabs) => { chrome.tabs.sendMessage(tabs[0].id || 0, { method: "getSelection" }, (response: PasteTextRespType) => { resolve(response); }); } ); }); }
 // associated with a submit button on the extension handleSubmit(event: any) { ... chrome.tabs && chrome.tabs.query({ active: true, currentWindow: true }, tabs => { chrome.tabs.sendMessage( tabs[0].id || 0, { method: REACT_MSG_METHODS.replyToEmail }, (resp) => { ... } ); }); event.preventDefault(); }

Sé que sería mejor si tuviera un oyente en el evento de clic antes de enviar la respuesta con verdadero, pero no he podido hacerlo de la manera correcta. La ayuda con eso también sería apreciada, pero hacer clic simplemente no funciona después de usar paste arriba.

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

0

Solo me tomó 5 días darme cuenta de esto, y me estaba volviendo completamente loco. Resulta que, cuando haces document.getSelection() , se enfoca en lo que selecciones, lo que evita que los eventos de click se disparen en otros elementos. Fue raro porque pude, por ejemplo, cambiar el css de fondo del elemento seleccionado. La solución fue cambiar el caso getSelection a:

 case "getSelection": { let sel = document.getSelection(); sendResponse({ text: sel.toString() }); sel.removeAllRanges(); break; }

Lo que elimina el foco/la selección y habilita el click para disparar.

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