es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Un script que se ejecuta cada segundo en una extensión de Chrome con el manifiesto v3.

Esta es mi primera extensión de Chrome utilizando manifest v3, y quiero hacer un temporizador en ella.

Se supone que debe actualizarse cada segundo y no ejecutarse en ninguna pestaña en particular ni en la ventana emergente.

Intenté hacer esto en mi servicio worker:

let counter = 0
setInterval(() => {
counter++
}, 1000)

Pero no funcionó bien porque después de aproximadamente medio minuto, el servicio worker se volvía “inactivo” y, por lo tanto, detenía este bucle.

Así que solo estoy buscando una manera de hacer un bucle que ejecute algún código cada 1 segundo. Este bucle siempre debe estar funcionando. Y realmente no tengo una forma de “iniciar” una función cada segundo desde otra página. Puedo iniciarlo una vez, pero debido al servicio worker que se vuelve inactivo después de un tiempo, entonces este script tiene que o bien nunca terminar o volver a iniciarse cada segundo.

¿Es esto siquiera posible?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear un temporizador que se actualice cada segundo en una extensión de Google Chrome utilizando el manifiesto v3, puedes usar un archivo de script de fondo en lugar de un worker de servicio. El script de fondo se ejecutará constantemente, permitiendo que tu temporizador se actualice sin interrupciones. Aquí tienes un ejemplo de cómo configurar un script de fondo para ejecutar un temporizador:

    1. Crea un archivo de script de fondo (por ejemplo, background.js) en el directorio de tu extensión.
    2. En tu archivo manifest.json, agrega el siguiente código para incluir el script de fondo:
      "background": {
       "service_worker": "/ruta/al/background.js"
      }
      
    3. En tu archivo background.js, configura una función setInterval para que se ejecute cada segundo:
      let counter = 0;
      setInterval(() => {
       counter++;
       // código para actualizar tu temporizador (por ejemplo, enviar un mensaje a tu ventana emergente)
      }, 1000);
      

      Este código ejecutará la variable counter cada segundo, actualizándola en cada intervalo. Puedes usar esta variable counter para actualizar la visualización de tu temporizador o ejecutar otro código según sea necesario.

    4. Asegúrate de incluir los permisos necesarios en tu archivo manifest para permitir que tu script de fondo se ejecute, como “tabs” o “storage” si es necesario para tu extensión.

    Con esta configuración, tu temporizador se actualizará cada segundo sin limitaciones por la inactividad del worker de servicio.

Comments are closed.