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

231
Visualizações
Trabajador de servicio persistente en la extensión de Chrome

Necesito definir mi Service Worker como persistente en mi extensión de Chrome porque estoy usando la API webRequest para interceptar algunos datos pasados en un formulario para una solicitud específica, pero no sé cómo puedo hacerlo. Lo he intentado todo, pero mi Service Worker sigue descargando.

¿Cómo puedo mantenerlo cargado y esperando hasta que se intercepte la solicitud?

over 4 years ago · Santiago Trujillo
5 Respostas
Responde à pergunta

0

Las devoluciones de llamada de WebSocket registradas desde los registros de escucha de chrome.runtime del trabajador de servicio de mis extensiones no se invocarían, lo que parece casi el mismo problema.

Me acerqué a este problema asegurándome de que mi trabajador de servicio nunca termine, al agregarle el siguiente código:

 function keepServiceRunning() { setTimeout(keepServiceRunning, 2000); } keepServiceRunning()

Después de esto, mis devoluciones de llamada ahora se invocan como se esperaba.

over 4 years ago · Santiago Trujillo Relatório

0

Si entiendo correctamente, puede despertar al trabajador del servicio (background.js) mediante alertas. Mira el siguiente ejemplo:

  1. manifiesto v3
 "permissions": [ "alarms" ],
  1. trabajador de servicio background.js:
 chrome.alarms.create({ periodInMinutes: 4.9 }) chrome.alarms.onAlarm.addListener(() => { console.log('log for debug') });

Desafortunadamente, este no es mi problema y es posible que usted también tenga un problema diferente. Cuando actualizo la extensión de desarrollo o detengo y ejecuto la extensión de producción, algún trabajador del servicio muere. Cuando cierro y abro el navegador, el trabajador no se ejecuta y los oyentes dentro del trabajador tampoco lo ejecutan. Intentó registrar al trabajador manualmente. Por ejemplo:

 // override.html <!DOCTYPE html> <html lang="en"> <head>...<head> <body> ... <script defer src="override.js"></script> <body> <html>
 // override.js - this code is running in new tab page navigator.serviceWorker.getRegistrations().then((res) => { for (let worker of res) { console.log(worker) if (worker.active.scriptURL.includes('background.js')) { return } } navigator.serviceWorker .register(chrome.runtime.getURL('background.js')) .then((registration) => { console.log('Service worker success:', registration) }).catch((error) => { console.log('Error service:', error) }) })

Esta solución me ayudó parcialmente, pero no importa porque tengo que registrar al trabajador en diferentes pestañas. Puede ser que alguien sepa la decisión. daré placer.

over 4 years ago · Santiago Trujillo Relatório

0

a diferencia de la API de chrome.webRequest, la API de chrome.webNavigation funciona perfectamente porque la API de chrome.webNavigation puede despertar al trabajador del servicio , por ahora puede intentar colocar la API de la API de chrome.webRequest dentro de chrome.webNavigation .

 chrome.webNavigation.onBeforeNavigate.addListener(function(){ chrome.webRequest.onResponseStarted.addListener(function(details){ //............. //............. },{urls: ["*://domain/*"],types: ["main_frame"]}); },{ url: [{hostContains:"domain"}] });
over 4 years ago · Santiago Trujillo Relatório

0

Como la respuesta de Clairzil Bawon samdi de que chrome.webNavigation podría despertar al trabajador del servicio en MV3, aquí hay una solución en mi caso:

 // manifest.json ... "background": { "service_worker": "background.js" }, "host_permissions": ["https://example.com/api/*"], "permissions": ["webRequest", "webNavigation"] ...

En mi caso, escucha el evento onHistoryStateUpdated para despertar al trabajador del servicio:

 // background.js chrome.webNavigation.onHistoryStateUpdated.addListener((details) => { console.log('wake me up'); }); chrome.webRequest.onSendHeaders.addListener( (details) => { // code here }, { urls: ['https://example.com/api/*'], types: ['xmlhttprequest'], }, ['requestHeaders'] );
over 4 years ago · Santiago Trujillo Relatório

0

Encontré una solución diferente para mantener viva la extensión. Mejora la respuesta de wOxxOm al usar una extensión secundaria para abrir el puerto de conexión a nuestra extensión principal. Luego, ambas extensiones intentan comunicarse entre sí en caso de que alguna se desconecte, por lo tanto, las mantiene vivas.

La razón por la que esto era necesario era que, según otro equipo de mi empresa, la respuesta de wOxxOm resultó ser poco fiable. Según se informa, su SW eventualmente fallaría de manera no determinista.

Por otra parte, mi solución funciona para mi empresa ya que estamos implementando software de seguridad empresarial y forzaremos la instalación de las extensiones. Hacer que el usuario instale 2 extensiones aún puede ser indeseable en otros casos de uso.

over 4 years ago · Santiago Trujillo 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