Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda