Tengo una extensión que opera un script en una página específica que obtiene datos dinámicos. Por esta razón, la última línea de la ejecución del script le indica a la página que se vuelva a cargar.
La extensión de Chrome en sí no es demasiado complicada (no agregué background.js y preferiría no hacerlo), tiene prácticamente solo el script y una ventana emergente con algunos botones para activar el script para que funcione bajo algunas condiciones (es decir, modificación del usuario algunos valores en un objeto JSON, confírmelos y, usando chrome.storage.local, envíelos como una matriz de cadenas al script que lo usa para sus cálculos).
Para resumir: lo que estoy buscando es una manera de decirle a la ventana emergente que tiene que activar el script durante una cierta cantidad de tiempo (por ejemplo, 5) sin que el usuario vuelva a activar el inicio del script. Actualmente, simplemente, mi popup.js es este:
ventana emergente actual.js
var toBeChangedByUser = //string const varAsJSON = JSON.parse(toBeChangedByUser); //function that will put varAsJSON in the chrome.local.storage function submitButton() { console.log("submit button clicked in popup"); asyncCallbackSendMessage("submitButton"); } function asyncCallbackSendMessage(messageString) { chrome.tabs.query({ active: true, currentWindow: true, }, function (arrayOfTabs) { var activeTab = arrayOfTabs[0]; var activeTabId = activeTab.id; chrome.tabs.sendMessage(activeTabId, { "message": messageString }); }); Lo único que pude pensar es usar un bucle for e intentar algo como esto:
podría funcionar popup.js?
var toBeChangedByUser = //string const varAsJSON = JSON.parse(toBeChangedByUser); //function that will put varAsJSON in the chrome.local.storage function submitButton() { console.log("submit button clicked in popup"); var i=0; for (i; i<5; i++) { setInterval(console.log("short break"), 500); //allowing time within a click and the following one document.addEventListener('DOMContentLoaded', console.log("loop no. " + i + " starting")); //wait page full reloading before next step asyncCallbackSendMessage("submitButton"); } } function asyncCallbackSendMessage(messageString) { chrome.tabs.query({ active: true, currentWindow: true, }, function (arrayOfTabs) { var activeTab = arrayOfTabs[0]; var activeTabId = activeTab.id; chrome.tabs.sendMessage(activeTabId, { "message": messageString }); }); Intenté esto una vez y lanzó este error:
Se negó a evaluar una cadena como JavaScript porque 'unsafe-eval' no es una fuente de script permitida en la siguiente directiva de Política de seguridad de contenido: "script-src 'self' blob: filesystem:".
Sin embargo, no soy un gran fanático de establecer intervalos, por lo que me pregunto si Chrome Extensions ofrece mejores soluciones para repetir un script que, al final de su ejecución, volverá a cargar la página en la que opera.
¿Hay algo que podría hacer el truco?