Estoy escribiendo una extensión que tiene una función para abrir una URL en una nueva pestaña/ventana. Entiendo que requerirá el permiso del usuario para permitir explícitamente una "ventana emergente".
El script de contenido de esa extensión se inyecta en cada sitio web, por lo tanto, el usuario debe otorgar permiso a la ventana emergente en cada dominio en el que active esta acción.
¿Hay alguna manera de evitarlo, por lo que el usuario solo tiene que permitir la ventana emergente una vez?
Siguiendo el excelente ejemplo de wOxxOm, aquí hay un ejemplo rápido de cómo podría manejar esto. La idea básica es enviar un mensaje desde la secuencia de comandos de contenido (que se inyecta en cada sitio web) a la secuencia de comandos de fondo, y desde allí llamar al método chrome.tabs.create.
contentScript.js
chrome.runtime.sendMessage({message: "openNewTab", urlToOpen: "https://www.example.com/"}, function (response) { });En el Script de fondo, entonces, tendrías que recibir el mensaje y abrir la pestaña deseada.
chrome.runtime.onMessage.addListener( // this is the message listener function(request, sender, sendResponse) { if (request.message === "openNewTab") openTabFromBackground(request.urlToOpen); } ); async function openTabFromBackground(url){ chrome.tabs.create({url: url}, function (tab) {}); }¡Eso es todo! Aquí hay algunos enlaces a los documentos oficiales: [https://developer.chrome.com/docs/extensions/mv3/messaging/][1] [https://developer.chrome.com/docs/extensions/reference/ tabs/#abriendo-una-página-de-extensión-en-una-nueva-pestaña][2]
Espero haber podido responder a su pregunta; si tienes alguna otra petición no dudes en preguntarme! Esta es mi primera respuesta SO, así que solo espero no haber infringido ninguna guía;)