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

133
Visualizações
¿Problema de devolución de llamada / asíncrono de JavaScript? La secuencia de comandos de fondo de Chrome Extension detiene la función antes de finalizar

Estoy tratando de crear un pequeño rastreador como una extensión de Chrome. Cómo funciona es: Abre una nueva ventana o pestaña. Realice una búsqueda de Google / Google News / YouTube con las palabras clave dadas. Almacenar información de los resultados en una pequeña base de datos

Primero creé y probé las funciones con un popup.html. Allí funciona perfectamente. Haces clic en un botón y se visitan todas las páginas y los resultados se almacenan en una base de datos. Pero quiero iniciar el programa sin hacer clic en nada primero. Por eso lo migré a background.js. Allí también funciona, pero solo si la consola Service Worker / DevTool está abierta. Solo entonces funciona completamente.

Agradecería cualquier respuesta útil.

 const keywords = [ "Keyword1", "Keyword2", // ... "Keyword13" ]; chrome.runtime.onStartup.addListener(() => { chrome.tabs.onUpdated.addListener(loadingWindow); openWindow(); }); // Opens new Window or Tab with the correct URL function openWindow() { chrome.tabs.onUpdated.addListener(loadingWindow); if (runs == 0) { chrome.windows.create({ url: getUrl(keywords[runs]), type: "normal" }, newWindow => { window_id = newWindow.id; }); } else { chrome.tabs.update(tab_id, { url: getUrl(keywords[runs]) }); } } // Wait to load the new tab function loadingWindow(tabId, changeInfo, tab) { if (changeInfo.status === 'complete' && tab.status == 'complete' && tab.windowId == window_id) { tab_id = tabId; console.log(tab.windowId); chrome.tabs.onUpdated.removeListener(loadingWindow); chrome.tabs.sendMessage(tab.id, { text: source }, doStuffWithDom); } }; // Get information from content script -> payload and then send to database function doStuffWithDom(domContent) { let payload = {... } var data = new FormData(); data.append("json", JSON.stringify(payload)); fetch(".../store.php", { method: "POST", body: data }); crawlDone(); } // open new window / tab or close the open window function crawlDone() { runs++; if (runs < keywords.length) { openWindow(); } else if (runs == keywords.length) { chrome.windows.remove(window_id); } };
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Cambié a la versión 2 de Manifest. Luego podría incluir Background.js a través de Background.html, que también se ejecuta hasta el final.

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