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

202
Vistas
Extensión de Chrome: obtención de la información DOM de la pestaña activa a través de un script en segundo plano

Sé que ha habido muchas preguntas relacionadas con este tema, pero ninguna de ellas hasta ahora me ha permitido resolver esto en V3. Cuando ejecuto el siguiente background.js, solo obtengo indefinido.

El objetivo de mi extensión, al menos para esta etapa, es raspar el DOM de la pestaña activa y extraer el contenido de texto de todos los elementos div.

Mi página background.js:

 function getDOM() { let htmlarr = []; const pageDOM = document.getElementsByTagName('div'); for (i = 0; i < pageDOM.length; i++) { htmlarr += pageDOM.innerHTML; } return Object.assign({}, htmlarr) } chrome.tabs.onActivated.addListener(activeInfo => { let domRes = chrome.scripting.executeScript({ target: { tabId: activeInfo.tabId }, func: getDOM }) console.log(domRes); });

mi manifiesto.json:

 { "name": "HTML Sourcer", "description": "Extract HTML source code", "version": "1.0", "minimum_chrome_version": "10.0", "manifest_version": 3, "permissions": ["scripting", "tabs", "activeTab"], "host_permissions": [ "*://*/*" ], "background": { "service_worker": "background.js" } }

Cualquier ayuda sería muy apreciada. ¡Gracias!

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

0

Problema 1

Según la documentación, este método API devuelve una Promesa cuando no hay un parámetro de devolución de llamada.

Para obtener el valor de Promise, agregue await y marque la función como async :

 chrome.tabs.onActivated.addListener(async info => { let domRes = await chrome.scripting.executeScript({ target: {tabId: info.tabId}, func: getDOM, }).catch(console.error); if (!domRes) return; console.log(domRes); });

Hay un catch porque algunas pestañas no admiten la inyección, por ejemplo, la pestaña de inicio o las pestañas chrome:// .

Problema 2

En JavaScript += no funciona con matrices, sino solo con números/cadenas. Utilice htmlarr. empujar () en su lugar. Tampoco es necesario convertir la matriz en un objeto a través de Object.assign.

En realidad, reescribamos getDOM usando Array.from :

 function getDOM() { return Array.from( document.getElementsByTagName('div'), el => el.innerHTML ); }
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