Estoy creando un complemento en Firefox Dev Edition (v100.0b7) y el script de fondo script.js no invoca window.onload . Solo funciona cuando la consola del desarrollador está abierta en Inspeccionar elemento y veo el mensaje que imprime en la consola. La función de carga está destinada a iniciar un oyente tan pronto como se carga la página, por lo que la ventana emergente del complemento (al hacer clic en el icono en la parte superior derecha) puede enviar una solicitud de contenido DOM. (Afaik, la ventana emergente tiene su propio DOM, por lo que no puede acceder directamente al DOM de la página). Puedo decir que no funciona cuando la consola de desarrollo está cerrada porque la ventana emergente no muestra ningún dato obtenido de la página DOM
Aquí están los archivos de script. El resto son HTML/CSS que funcionan como se esperaba:
manifiesto.json
{ "manifest_version": 2, "name": "Extension", "version": "1.0", "content_scripts": [ { "matches": [ "https://example.com" ], "js": [ "script.js" ] } ], "permissions": [ "storage", "activeTab" ], "browser_action": { "default_title": "Extension", "default_icon": "icon.png", "default_popup": "index.html" }, "browser_specific_settings": { "gecko": { "id": "example@example.com" } } }guión.js
// This script should run immediately when window finishes loading window.onload = function () { console.log("Loaded successfully"); browser.runtime.onMessage.addListener(messageHandler); };complemento-ventana-popup/script.js
// This script only runs when the popup is opened (user clicks top-right icon) window.onload = function () { browser.tabs.query({ currentWindow: true, active: true }) .then((tabs) => { for (const tab of tabs) { browser.tabs.sendMessage(tab.id, "message request") .then(responseHandler); } }); };