Aquí tengo este código, que ejecuta una solicitud a Google Analytics (revisé, esa parte funciona en un script emergente) y me gustaría que envíe un "pedido" diario, por así decirlo, para saber cuántos usos diarios tengo. instalado.
Establecí el intervalo en 5 segundos para fines de prueba, pero esto no parece funcionar de todos modos.
function doSomething() { chrome.storage.sync.get('session', function(result){ var val = result.session; var xhttp = new XMLHttpRequest(); xhttp.open("GET", "http://bat.global.cf:8000/checkok.html?rando="+val); xhttp.send(); xhttp.open("GET", "https://www.google-analytics.com/collect?v=1&tid=UA-232507651-1&cid="+val+"&t=pageview&dp=%2Fdaily24hCheck"); xhttp.send(); }); } setInterval(doSomething, 5000); // Time in milliseconds /*Anonymous anylitics code for a background script end*/¿Hay algo que me estoy perdiendo acerca de los scripts de fondo? La solicitud no parece ser enviada, ¿cómo puedo solucionar esto?
Te estás perdiendo el hecho de que no se están ejecutando de forma persistente. Consulte la documentación de Migración a Service Workers :
Es común que los desarrolladores web realicen operaciones retrasadas o periódicas utilizando los métodos
setTimeoutosetInterval. Sin embargo, estas API pueden fallar en los trabajadores del servicio, porque el programador cancelará los temporizadores cuando finalice el trabajador del servicio.
La forma idiomática de lograr lo que desea aquí es usar la API chrome.alarms , que también se analiza en ese enlace.
Tenga en cuenta que las alarmas "armadas" no sobrevivirán a un reinicio completo de la extensión (por ejemplo, si se reinicia el navegador), por lo que probablemente debería guardar la última vez que su código de alarma se ejecutó con éxito y verificar si necesita enviar una baliza / cuándo debe hacerlo. programe una nueva alarma en el inicio de la extensión (por ejemplo, a través chrome.runtime.onStartup ).