Soy muy nuevo en la escritura de extensiones de navegador y, en este momento, estoy creando un pequeño script que mejora Oracle BI para mi empresa. Básicamente, solo cambia algunas cosas en el DOM, como agregar un ícono a una pestaña, según la URL en la que se encuentre (al menos por ahora), y funciona bien. Aquí hay un manifest.json por ahora:
manifset.json
{ "manifest_version": 2, "name": "BI+", "version": "1.0", "description": "Zestaw dodatków wzbogacających funkcjonalność Oracle BI.", "icons": { "48": "icons/border-48.png" }, "content_scripts": [ { "matches": ["*://*/analytics/saw.dll?IBotSummary*"], "js": ["scripts/agent_edit.js"] }, { "matches": ["*://*/analytics/saw.dll?EditDashboard*"], "js": ["scripts/dashboard_edit.js"] } ] }Entonces, para cada tipo diferente de página, tendré un script separado y, como puede imaginar, eso significa reutilizar una gran cantidad de código. Así que creé un módulo separado, utilities.js, para empaquetar todas las funciones que estoy reutilizando a menudo:
/icons /scripts ++ utilities.js ++ agent_edit.js ++ dashboard_edit.js" manifest.jsonPor ahora es solo un simple hello_world, y no puedo hacer que funcione:
export function hello_world (){ console.log('HELLO WORLD'); }y mi scripts/agent_edit.js es básicamente eso (muy simplificado):
import { hello_world } from "./utilities.js"; function _some_async_awaiting_for_element() { main() } function main () { hello_world() add_icon_to_tab() # I want to move this to utilities.js once I get it to work }Y tan pronto como hago esa importación en este script de contenido, ni siquiera la llamada a la función hello_world(), este script de contenido simplemente no se activa en el sitio web correcto. Revisé todas las formas posibles de importar en mozilla docs: Mozilla Docs .
Creo que podría tener algo que ver con esta línea en los documentos, pero no estoy seguro de cómo implementarlo cuando básicamente mi extensión no incluye un DOM:
La declaración de importación no se puede utilizar en secuencias de comandos incrustadas a menos que dicha secuencia de comandos tenga un tipo = "módulo".
¿Cómo se haría para importar módulos en este tipo de extensión?