tienda extensiones chrome añadir aplicaciones agregar accessurl google-chrome google-chrome-extension browser-tab

extensiones - ¿Cómo puedo obtener la URL de la pestaña actual desde una extensión de Google Chrome?



extensiones chromium (7)

Me estoy divirtiendo con la extensión de Google Chrome, y solo quiero saber cómo puedo almacenar la URL de la pestaña actual en una variable.


El problema es que chrome.tabs.getSelected es asincrónico. Este código a continuación generalmente no funcionará como se espera. El valor de ''tablink'' aún no estará definido cuando se escribe en la consola porque getSelected aún no ha invocado la devolución de llamada que restablece el valor:

var tablink; chrome.tabs.getSelected(null,function(tab) { tablink = tab.url; }); console.log(tablink);

La solución es envolver el código donde usará el valor en una función y tendrá invocado por getSelected. De esta forma, se garantiza que siempre tendrá un conjunto de valores, ya que su código tendrá que esperar a que se proporcione el valor antes de que se ejecute.

Pruebe algo como:

chrome.tabs.getSelected(null, function(tab) { myFunction(tab.url); }); function myFunction(tablink) { // do stuff here console.log(tablink); }


Hola, aquí hay una muestra de Google Chrome que envía por correo electrónico el sitio actual a un amigo. La idea básica detrás es lo que quieres ... primero que nada busca el contenido de la página (no interesa para ti) ... luego obtiene la URL (<- buena parte)

Además, es un buen ejemplo de código de trabajo, que prefiero muchísimo leer documentos.

Se puede encontrar aquí: Enviar esta página por correo electrónico


Otras respuestas asumen que quieres saberlo desde un script emergente o de fondo.

En caso de que desee conocer la URL actual de una secuencia de comandos de contenido , se aplica la forma estándar de JS:

window.location.toString()

Puede usar las propiedades de window.location para acceder a partes individuales de la URL, como el host, el protocolo o la ruta.


Para aquellos que usan la context menu api , los documentos no son claros inmediatamente sobre cómo obtener información de pestañas.

chrome.contextMenus.onClicked.addListener(function(info, tab) { console.log(info); return console.log(tab); });

https://developer.chrome.com/extensions/contextMenus


Tienes que verificar chrome.tabs.query .

HTML

<button id="saveActionId"> Save </button>

manifest.json

"permissions": [ "activeTab", "tabs" ]

JavaScript
El siguiente código guardará todas las URL de la ventana activa en el objeto JSON como parte del clic del botón.

var saveActionButton = document.getElementById(''saveActionId''); saveActionButton.addEventListener(''click'', function() { myArray = []; chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition}); function (array_of_Tabs) { //Tab tab arrayLength = array_of_Tabs.length; //alert(arrayLength); for (var i = 0; i < arrayLength; i++) { myArray.push(array_of_Tabs[i].url); } obj = JSON.parse(JSON.stringify(myArray)); }); }, false);


Un amigo responde mi pregunta.

Primero, debes establecer los permisos para la API de pestañas:

"permissions": [ "tabs" ]

Y para almacenar la URL:

chrome.tabs.getSelected(null,function(tab) { var tablink = tab.url; });


Actualización: el método chrome.tabs.getSelected() ahora está en desuso.

La forma recomendada de obtener la URL de la pestaña actual es usar chrome.tabs.query() .

Un ejemplo de uso:

chrome.tabs.query({''active'': true, ''lastFocusedWindow'': true}, function (tabs) { var url = tabs[0].url; });

Esto requiere que solicite acceso a la API chrome.tabs en su manifiesto de extensión :

"permissions": [ ... "tabs" ]

Es importante tener en cuenta que la definición de su "pestaña actual" puede variar según las necesidades de su extensión.

Establecer lastFocusedWindow: true en la consulta es apropiado cuando desea acceder a la pestaña actual en la ventana enfocada del usuario (generalmente la ventana superior).

Establecer currentWindow: true permite obtener la pestaña actual en la ventana donde se está ejecutando el código de su extensión. Por ejemplo, esto podría ser útil si su extensión crea una nueva ventana / ventana emergente (cambio de foco), pero aún quiere acceder a la información de la pestaña desde la ventana donde se ejecutó la extensión.

Elegí usar lastFocusedWindow: true en este ejemplo, porque Google llama casos en los que currentWindow no siempre está presente .

Puede refinar aún más su consulta de pestaña utilizando cualquiera de las propiedades definidas aquí: chrome.tabs.query