Me estoy divirtiendo con la extensión Google Chrome, y solo quiero saber cómo puedo almacenar la URL de la pestaña actual en una variable.
Me estoy divirtiendo con la extensión Google Chrome, y solo quiero saber cómo puedo almacenar la URL de la pestaña actual en una variable.
Usar chrome.tabs.query()
así:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Esto requiere que solicite acceso a la chrome.tabs
API 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.
La configuración lastFocusedWindow: true
en la consulta es apropiada cuando desea acceder a la pestaña actual en la ventana enfocada del usuario (generalmente la ventana superior).
La configuración le currentWindow: true
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 (cambio de 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 menciona casos en los que currentWindow
no siempre están presentes .
Puede refinar aún más su consulta de pestañas utilizando cualquiera de las propiedades definidas aquí: chrome.tabs.query
¡Advertencia!
chrome.tabs.getSelected
está en desuso . Utilicechrome.tabs.query
como se muestra en las otras respuestas.Primero, debe establecer los permisos para la API en manifest.json:
Y para almacenar la URL:
fuente
chrome.tabs.getSelected
no está definido, ¿debería hacerlo en otra pregunta?chrome.tabs.getSelected
método ha quedado en desuso, el método correcto aparece en la siguiente respuesta .Otras respuestas suponen que desea saberlo desde una ventana emergente o un script de fondo.
En caso de que desee conocer la URL actual de un script de contenido , se aplica la forma estándar de JS:
Puede usar las propiedades de
window.location
para acceder a partes individuales de la URL, como el host, el protocolo o la ruta.fuente
window.location.host
ver si estoy en "stackoverflow.com" o no.match:"<all_urls>"
situación en la sección content_script y Chrome no se recomienda <all_urls>.contentScript.js
y no en elbackground.js
. Simplemente pase cualquier información que haya filtrado de la URL al mensajebackground.js
. Ejemplo:let message = { type: "fetchVideoDate", id: getVideoId() };
dondegetVideoId()
contiene una ejecución dewindow.location.toString()
. De lo contrario, obtendrá algunoschrome://temp_background_file.html
datos. También tenga en cuenta que a vecesmessage
se llamarequest
.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 'tablink' seguirá sin definirse cuando se escriba en la consola porque getSelected aún no ha invocado la devolución de llamada que restablece el valor:
La solución es envolver el código donde usará el valor en una función y hacer que se invoca getSelected. De esta manera, se garantiza que siempre tendrá un valor establecido, ya que su código tendrá que esperar a que se proporcione el valor antes de ejecutarse.
Intenta algo como:
fuente
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 ... en primer lugar, busca el contenido de la página (no es interesante para ti) ... luego obtiene la URL (<- buena parte)
Además, es un buen ejemplo de código de trabajo, que prefiero con mucho entusiasmo a leer Documentos.
Se puede encontrar aquí: envíe esta página por correo electrónico
fuente
Esta solución ya está PROBADA.
establecer permisos para API en manifest.json
En la primera carga llama a la función. https://developer.chrome.com/extensions/tabs#event-onActivated
En función de cambio de llamada. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
la función para obtener la URL
fuente
Para aquellos que usan el
context menu api
, los documentos no tienen claro de inmediato cómo obtener información de la pestaña.https://developer.chrome.com/extensions/contextMenus
fuente
Tienes que verificar esto .
HTML
manifest.json
JavaScript
El siguiente código guardará todas las URL de la ventana activa en el objeto JSON como parte del clic del botón.
fuente