Entonces, tengo esta extensión, y debería mostrar una ventana emergente personalizada en la página cuando se hace clic en el ícono, y por "ventana emergente personalizada", quiero decir, algo renderizado dentro de un <iframe> e inyectado en el propio dominio de la página, no un "ventana emergente de extensión tradicional", pero el problema es que en algunas páginas no puedo inyectar un script de contenido, en esos casos, me gustaría mostrar el contenido en la "ventana emergente de extensión tradicional".
Lo hice funcionar, pero no es la solución más elegante, así es como lo estoy haciendo
El popup.html no tiene contenido en su <body> e importa un script.
Esta secuencia de comandos intenta enviar un mensaje a la secuencia de comandos de contenido que se ejecuta en la página; si el mensaje se envía correctamente, la ventana emergente se cerrará sola y la secuencia de comandos de contenido se encargará de la representación en la página.
Si el mensaje no se pudo enviar, entonces intenta inyectar el script en la página, si la inyección funciona, entonces el mensaje se envía de nuevo, si no, entonces estamos en una página que no permite la inyección, en eso caso, simplemente representamos el contenido en el cuerpo de la ventana emergente (estoy usando Svelte aquí)
browser.tabs.query({active: true, currentWindow: true}).then(tabs => { const tab = tabs[0]; browser.tabs.sendMessage(tab.id, {action: "toggle"}).then(() => { window.close(); }).catch(() => { injectScript(tab).then(() => { browser.tabs.sendMessage(tab.id, {action: "toggle"}).then(() => { window.close(); }); }).catch(() => { document.body.style.width="400px"; document.documentElement.style.height="580px"; new App({ target: document.body, }); }); }); });La cuestión es que, la mayoría de las veces, este proceso es básicamente instantáneo, solo haces clic en el ícono y aparece la ventana emergente personalizada, pero a veces, toma un poco más de tiempo (¿quizás 1 segundo?), y en ese tiempo, puedes vea la "ventana emergente tradicional" en su tamaño mínimo (¿quizás algo alrededor de 32x32? Es un cuadrado realmente pequeño)
Lo que me gustaría es mantener la ventana emergente oculta hasta que mi código "decidiera" si es posible o no inyectar el contenido en la página.
Lo que he probado y no funciona:
¿Hay alguna manera de hacer lo que estoy buscando?
EDITAR: Aquí hay una imagen para que puedas entender mejor de lo que estoy hablando, este es el "cuadrado": 
A veces ni siquiera puedes verlo, a veces solo parpadea, y a veces tarda un poco más en desaparecer, depende de la PC, creo.
Yo usaría una capa en este caso. Una capa se puede hacer usando CSS, puede contener todo el formato y el texto adecuados, y se puede mostrar u ocultar cuando lo desee sin afectar el resto del texto que la rodea debido a que se encuentra en otra capa. No estoy seguro de si esto resolverá su problema porque realmente no conozco el contexto del programa que está creando y lo que está tratando de lograr.