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.

Inyectar JavaScript desde un script de contenido con una extensión de Chrome v3.

Estoy migrando mi extensión de la versión V2 a la versión V3. Ahora todo funciona bien, excepto por una cosa. En mi versión V2 hacía lo siguiente:

const actualCode = '(() => { console.log("demo"); })();';
const script = document.createElement('script');
script.textContent = actualCode;
(document.head || document.documentElement).appendChild(script);
script.remove();

Ten en cuenta que console.log("demo") es una simplificación de lo que necesito inyectar 🙂

Necesito inyectar algo de JavaScript para que funcione mi extensión para Chrome.

Sin embargo, en la versión V3 esto ya no funciona. Recibo el siguiente error en la consola de herramientas de desarrollo:

content.js:23114 

Refused to execute inline script because it violates the following 
ContentSecurity Policy directive: "script-src 'self'". Either the 
'unsafe-inline' keyword, a hash ('sha256-tN52+5...6d2I/Szq8='), or a nonce
('nonce-...') is required to enable inline execution.

En la guía de migración noté esta sección:

"content_security_policy": {
   "extension_pages": "...",
   "sandbox": "..."
}

Pero hay poca descripción allí, así que esto es mágico para mí. Espero que alguien pueda ayudarme con esto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Q: ¿Cuál es el problema que enfrenta el usuario al migrar su extensión de Chrome de V2 a V3?

    El usuario enfrenta un problema al inyectar JavaScript en su extensión de Chrome utilizando el código mencionado en la versión V2. Están obteniendo un error en su consola de herramientas de desarrollo que dice “Se ha rechazado la ejecución de un script en línea porque viola la siguiente directiva de la Política de Seguridad de Contenido: ‘script-src ‘self”. Se requiere la palabra clave ‘unsafe-inline’, un hash (‘sha256-tN52+5…6d2I/Szq8=’) o un número (‘nonce-…’) para habilitar la ejecución en línea”. Están preocupados por cómo resolver este problema durante el proceso de migración.

Comments are closed.