Estoy tratando de escribir un complemento de Firefox que permita al usuario traer rápidamente una ventana abierta específica al frente. Mientras investigaba sobre cómo enfocar las ventanas, aprendí que los navegadores restringen mucho esto para evitar el mal uso. Lo cual apoyo totalmente si no es la intención del usuario. En mi caso, el usuario instalaría el AddOn para tener explícitamente esta funcionalidad, por lo que el usuario tendría la intención de enfocar las ventanas.
La forma clásica de hacer esto es Window.focus() pero incluso los documentos de Mozilla dicen que el éxito de esta operación depende de la configuración del navegador del usuario.
Hace una solicitud para llevar la ventana al frente. Puede fallar debido a la configuración del usuario y no se garantiza que la ventana esté al frente antes de que regrese este método. - Fuente
En mi navegador (Firefox 94 en Ubuntu) no funciona.
También leí que establecer dom.disable_window_flip en true en about:config habilitará Window.focus() pero no lo hizo, y no sería un enfoque factible para un AddOn.
Los complementos de Firefox usan un sistema de permisos y mi expectativa sería que debe haber un permiso que permita enfocar las ventanas para este complemento específico. Desafortunadamente, los permisos no están muy bien documentados y no pude encontrar el correcto a través de prueba y error.
La mayor parte de la escasa información sobre el enfoque de ventanas a través de complementos que encontré en la web se publicó hace 5 o 10 años y ya no funciona.
Probé varios enfoques como llamar a browser.windows.update(tabId, { focused: true }) desde el script emergente (con el que tengo un problema diferente ). También traté de inyectar un script de contenido que llama a Window.focus() cuando me lo pide un mensaje del script emergente. Ninguno de esos funcionó.
Entonces, mi primera pregunta sería: ¿hay alguna forma hoy (2021, Firefox 94) de permitir que los complementos traigan una ventana al frente?
Y si es así: ¿alguien puede mostrarme cómo?
¡Gracias por adelantado!
Creo que necesitas nombrar tu ventana y luego enfocarla.
const newWindow = window.open('http://....', 'NameOfTheWindow'); newWindow.focus();