Estoy tratando de obtener permiso dinámicamente para ciertos sitios (por ejemplo, amazon.fr) usando un permiso opcional y una vez que obtengo el permiso, estoy inyectando algo de JS en los sitios para los que solicité permisos usando la función RequestContentScript de la API de contenido declarativo .
Todo esto funciona bien por primera vez hasta que cierro el navegador o cierro todas las páginas donde se inyectan los scripts inicialmente. Pero después de que la página inyecte JS no se inyecta en esos sitios. Cuando verifico el permiso y los sitios de la extensión, veo que todos los permisos que solicité opcionalmente todavía están presentes a través de la API de obtención de permisos.
El código js de fondo que estoy usando para solicitar permiso e inyectar scripts es el siguiente
const conditions = []; chrome.permissions.request({ permissions: ['declarativeContent'], origins:['https://www.amazon.fr/'], }, (granted) => { console.log({ granted }); if (granted) { conditions.push(new chrome.declarativeContent.PageStateMatcher({ pageUrl: { hostEquals: 'www.amazon.fr', schemes: ['https'] }, css: ['div'], })); const rule2 = { conditions, actions: [ new chrome.declarativeContent.RequestContentScript({ js: ['page_injects/index.js'], css: ['page_injects/index.css'] })], }; chrome.declarativeContent.onPageChanged.removeRules(undefined,() => { chrome.declarativeContent.onPageChanged.addRules([rule2]); }); console.log('chrome.declarativeContent.onPageChanged.addRules done'); } });Dado que esto funciona por primera vez, no estoy seguro de cuál podría ser el problema al tener el mismo comportamiento la segunda vez y después.
¿Algún consejo sobre cómo proceder con esto?
Usé esta pregunta SO para llegar a inyectar scripts opcionalmente.