Pregunta

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

¿Fue útil?

Solución

Actualizar: los chrome.tabs.getSelected() El método ahora está en desuso.

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

Un uso de ejemplo:

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

Esto requiere que solicite acceso al chrome.tabs API en tu manifiesto de extensión:

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

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

Ajuste lastFocusedWindow: true En la consulta es apropiada cuando desea acceder a la pestaña actual en la ventana enfocada del usuario (generalmente la ventana más alta).

Ajuste currentWindow: true Le permite obtener la pestaña actual en la ventana donde el código de su extensión se está ejecutando actualmente. Por ejemplo, esto podría ser útil si su extensión crea una nueva ventana / ventana emergente (cambiando el enfoque), 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 a los casos en los que currentWindow puede que no siempre esté presente.

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

Otros consejos

Un amigo responde a mi pregunta.

Primero, debe establecer los permisos para la API de pestaña:

"permissions": [
    "tabs"
]

Y para almacenar la URL:

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

Otras respuestas suponen que desea saberlo desde una ventana emergente o script de fondo.

En caso de que quiera saber la URL actual De un script de contenido, se aplica la forma estándar de JS:

window.location.toString()

Puedes usar propiedades de window.location Para acceder a partes individuales de la URL, como el host, el protocolo o la ruta.

El problema es que chrome.tabs.getSelected es asíncrono. Este código a continuación generalmente no funcionará como se esperaba. El valor de 'Tableink' aún estará indefinido cuando se escriba 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 utilizará el valor en una función y lo invocará por GetSelected. De esta manera, se le garantiza que siempre tenga un valor establecido, porque su código tendrá que esperar a que se proporcione el valor antes de ejecutarlo.

Prueba 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 un correo electrónico al sitio actual a un amigo. La idea básica detrás es lo que quieres ... En primer lugar, obtiene el contenido de la página (no se interesa para ti) ... luego obtiene la URL (<- buena parte)

Además, es un buen ejemplo de código de trabajo, que prefiero a Motstly sobre los documentos de lectura.

Se puede encontrar aquí:Envíe un correo electrónico a esta página

Para aquellos que usan el context menu api, los documentos no están claros de inmediato sobre cómo obtener información de pestaña.

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

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

Tienes que verificar este.

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top