Estoy tratando de obtener la URL de la pestaña activa cuando el usuario va a un nuevo sitio web. La tienda web de Chrome ha sugerido que elimine el permiso de tabs y use activeTab en su lugar. No tengo un script de contenido y solo necesito la URL activa.
Actualmente obtengo la pestaña activa y la guardo en una variable global con el permiso de pestañas:
let ACTIVE_URL = ''; chrome.tabs.onActivated.addListener((_activeInfo)=> { chrome.tabs.query({active: true}, (tabs) => { ACTIVE_URL = tabs[0].url || tabs[0].pendingUrl || ACTIVE_URL; }); }); chrome.tabs.onUpdated.addListener((_tabID, _changeInfo, tab) => { ACTIVE_URL = tab.url || ACTIVE_URL; });esta pregunta , y los comentarios de woxxom parecen indicar que no es posible. Pero de acuerdo con la documentación de activeTab , activeTab le permite
Interceptar solicitudes de red en la pestaña al origen del marco principal de la pestaña mediante la API webRequest. La extensión obtiene temporalmente permisos de host para el origen del marco principal de la pestaña.
Entonces parece que esto es posible (en lugar del marcador de posición chrome.getActiveUrl(); ).
chrome.webRequest.onBeforeRequest.addListener( (webRequest) => { const activeURL = ACTIVE_URL // chrome.getActiveUrl(); if (activeURL === url.im.looking.for) { return {cancel: true}; } return {cancel: false}; }, { urls: ["http://*/*", "https://*/*"], types: ['main_frame'] }, ['blocking'] );esta pregunta dice que no es posible usar una función asíncrona dentro del oyente onBeforeRequest.
¿Cómo se obtiene la URL con activeTab dentro de una devolución de llamada webRequest fn?