Estoy escribiendo una extensión de Chrome usando Manifest V3 y tratando de encontrar una manera de ejecutar cadenas de código de forma dinámica (similar a los scripts de usuario). Existen métodos para ejecutar cadenas de código (eval, setTimeout, new Function, etc.); sin embargo, parecen prohibidos en el Manifiesto V3. Si bien setTimeout aún funciona, el equipo de Chrome afirma que la ejecución de cadenas de código ya no se aceptará cuando se envíe a Chrome Web Store. El código debe ser parte de la extensión cuando se envíe. También se indica en el siguiente enlace en "Código alojado de forma remota":
https://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration/
Vi algunas publicaciones en el foro y crbugs publicados sobre este problema, pero todos parecen obsoletos sin una respuesta definitiva. Al igual que el enlace anterior, las publicaciones anteriores indican que ya no será posible ejecutar cadenas de código. Las publicaciones más nuevas pero aún desactualizadas (2020) indican que Manifest V3 tendrá casos de uso (como TamperMonkey) en los que los scripts de usuario se pueden registrar dinámicamente, pero solo después de darle un aviso al usuario. Los únicos dos métodos que veo que permiten que una extensión ejecute secuencias de comandos dinámicamente son "chrome.scripting.registerContentScripts" y "chrome.scripting.executeScript". Ambos métodos ejecutan código desde archivos, no cadenas. El método anterior "chrome.tabs.executeScript" solía permitir la ejecución de cadenas de código, pero ahora está obsoleto.
¿Hay alguna forma en que Chrome Web Store lo permita o alguna actualización de este problema?
Edición 1:
Si ejecutar scripts dinámicamente desde archivos es la única forma:
Edición 2:
Reformulado 2 (bajo Edición 1).
Edición 3:
Gracias a todos los que han respondido. No parece que haya una solución a este problema, todavía. No ha habido anuncios públicos que haya escuchado o leído sobre cómo (si es posible) las cadenas de código de script se pueden ejecutar dinámicamente (que no serían rechazadas por Chrome Web Store).
A partir del 13 de noviembre de 2021, puede hacer una de las siguientes cosas:
Gracias a todos.
En sandbox, se puede ejecutar una cadena de código.
https://developer.chrome.com/docs/extensions/mv3/manifest/sandbox/
Hay varias restricciones para el código de la caja de arena, por ejemplo, no puede acceder a DOM. Depende de lo que quieras hacer con la cadena de código.