javascript - permitir - Extensión de Chrome: Obtener la pestaña actual de la ventana emergente
permitir ventanas emergentes firefox (2)
No importa.
Resulta que, en realidad, puedes usar chrome.tabs.getSelected
directamente desde la ventana emergente. Alguien mintió. ¬¬
Estoy escribiendo una extensión de Chrome y, en una parte, necesito obtener el título y la URL de la pestaña actual cuando se hace clic en un botón de la página emergente.
He trabajado con el sistema de paso de mensajes de Chrome antes y, después de mucho esfuerzo, logré que funcionara, en muchas ocasiones. Sin embargo, nunca tuve que usarlas con páginas emergentes y, por lo que he leído, es mucho más difícil de hacer.
La línea de tiempo que he logrado averiguar hasta ahora es la siguiente:
-
popup.html
/popup.js
: se hace clic en el botón -
popup.html
/popup.js
: la solicitud / mensaje se envía al script de contenido -
contentScript.js
: La solicitud / mensaje se recibe de la página emergente -
contentScript.js
: el título y la URL de la pestaña actual se almacenan en una variable -
contentScript.js
: las 2 variables se envían como una respuesta de cadena -
popup.html
/popup.js
: las 2 variables se analizan a partir de la respuesta
Por lo general, podría resolver esto, pero he leído algunas cosas que han arrojado una llave en las obras, como:
-
chrome.tabs.getSelected
solo se puede utilizar en una página / script de fondo. ¿Esto significa que los scripts de contenido no necesitan ser utilizados en absoluto? - Los mensajes no se pueden enviar directamente desde la secuencia de comandos de contenido a la página emergente, tienen que ir a través de una página de fondo
- Una ventana emergente debe confirmarse como existente antes de que se le pase un mensaje (aunque creo que sé cómo hacerlo)
Ya encontré el sistema de paso de mensajes de Chrome bastante difícil, pero esto me ha confundido totalmente. De ahí, este post.
chrome.tabs.getSelected
está en desuso. Deberías usar chrome.tabs.query
en chrome.tabs.query
lugar.
chrome.tabs.query
requiere dos parámetros: un objeto de consulta y una función de devolución de llamada que toma la matriz de pestañas resultantes como un parámetro.
Puede obtener la "pestaña actual" consultando todas las pestañas que están actualmente activas y se encuentran en la ventana actual.
var query = { active: true, currentWindow: true };
Dado que la consulta devolverá una matriz de pestañas que contiene solo la pestaña actual, asegúrese de tomar el primer elemento en la devolución de llamada
function callback(tabs) {
var currentTab = tabs[0]; // there will be only one in this array
console.log(currentTab); // also has properties like currentTab.id
}
Et voilà:
chrome.tabs.query(query, callback);