Me he metido en la madriguera del conejo de StackOverflow y encontré preguntas similares que no funcionan o parecen inseguras, así que aquí hay una más.
Quiero crear una extensión de Google Chrome que funcione con Gmail. Cuando alguien redacta un nuevo correo electrónico, agrega una pequeña casilla de verificación al generador de correo electrónico. Cuando alguien marca esta casilla, solo quiero que la consola registre "marcado". Se parece a esto
La forma más fácil de hacer esto es simplemente crear un atributo para "onchange" y llamar a una función. Como esto:
mauticCheckbox.setAttribute('onchange', 'test()')Pero esto genera un error: "Se negó a ejecutar el controlador de eventos en línea porque viola la siguiente directiva de Política de seguridad de contenido:" script-src 'report-sample' 'nonce-isArkHmhi5JlS1U0S0z2uA' 'unsafe-inline' 'strict-dynamic' https: http: 'evaluación insegura'"."
Leí en otras preguntas similares que puede deshabilitar el 'inseguro en línea', pero que es menos seguro. Esto podría ser un último recurso, pero prefiero no hacerlo.
Así que sigo investigando y la otra forma de hacer esto parece ser agregar JavaScript en la etiqueta principal. No tengo un archivo HTML para mi código ya que lo estoy agregando a la ventana de redacción de Gmail, por lo que mi código era algo como esto:
window.onload=function() { addJavaScriptHead() } function addJavaScriptHead() { let head = document.getElementsByTagName('head')[0]; let script = document.createElement('script'); script.type = 'module'; script.onload = function() { listenForClick(); // My function from background.js } script.src = 'background.js'; head.appendChild(script); }Pero, por desgracia, esto se encuentra con un mensaje de error similar (pero diferente): "Se negó a cargar el script 'https://mail.google.com/mail/u/0/background.js' porque viola la siguiente Política de seguridad de contenido directiva: "script-src 'self'"."
¿Cómo puedo llamar a una función cuando este elemento se cambia de no hacer clic a hacer clic y viceversa?
Gracias por adelantado :)
En primer lugar, debe configurar su archivo en web_accessible_resources en manifest.json
"web_accessible_resources" : { "resources": ["path/to/background.js"], "matches": ["<all_urls"] }Luego, cambie el script src a:
script.src = chrome.runtime.getURL("path/to/background.js")