Cómo modificar la ubicación de URL actual en Chrome a través de extensiones
-
19-09-2019 - |
Pregunta
Quiero crear una extensión que redirige al usuario a otro sitio web si hace clic en el botón de extensión. Hasta ahora solo he visto extensiones que crean una nueva pestaña para cada clic.
¿Es posible redirigir al usuario a otro sitio web utilizando la pestaña Active?
Intenté algo como esto:
chrome.browserAction.onClicked.addListener(function(tab) {
var url = "https://www.mipanga.com/Content/Submit?url="
+ encodeURIComponent(tab.url)
+ "&title=" + encodeURIComponent(tab.title);
document.location.href = url; // <-- this does not work
});
Solución
Atención: Si desarrollas extensiones de navegador cruzado (¡espero que lo hagas!), Te recomiendo que uses
chrome.tabs.query()
. Por favor mira Respuesta de Jean-Marc Amon para más información. Esta respuesta todavía funciona tanto en Firefox como en Chrome, peroquery()
se usa más comúnmente, tiene más opciones y funciona en páginas de fondo y vistas emergentes.
Desde el chrome.tabs
API, puedes usar getCurrent()
o query()
.
yo prefiero getCurrent
pero no se puede llamar desde un contexto no pestaña (por ejemplo, una página de fondo o una vista emergente). Si esto es un problema para usted, debe buscar usar query
en cambio. Jean-Marc Amon's responder A continuación, proporciona un maravilloso ejemplo de cómo obtener la pestaña Activa en este caso (¡no olvide votarlo!).
Una vez que tenga la pestaña actual, simplemente pase update()
.
chrome.tabs.getCurrent(function (tab) {
//Your code below...
var tabUrl = encodeURIComponent(tab.url);
var tabTitle = encodeURIComponent(tab.title);
var myNewUrl = "https://www.mipanga.com/Content/Submit?url=" + tabUrl + "&title=" + tabTitle;
//Update the url here.
chrome.tabs.update(tab.id, {url: myNewUrl});
});
NÓTESE BIEN: Para usar esto esta funcionalidad, deber Asegúrese de tener el tabs
Permiso habilitado en su manifest.json
expediente:
"permissions": [
"tabs"
],
Otros consejos
Puedes usar chrome.tabs.Query también
chrome.tabs.query({currentWindow: true, active: true}, function (tab) {
chrome.tabs.update(tab.id, {url: your_new_url});
});
los chrome.tabs.update
El método (al menos, a partir de enero de 2017) se ejecutará automáticamente en la pestaña Activa actual si no se pasa un ID de pestaña.
Esto tiene la ventaja adicional de no requerir el tabs
permiso. Las extensiones con este permiso advierten al usuario que puede leer el historial de navegación, por lo que debe evitar pedirlo si no es necesario.
Cambiar la URL de la pestaña actual es tan simple como escribir esto:
chrome.tabs.update(undefined, {url: 'http://example.com'});
O como lo mencionó Farwayer en los comentarios, no necesita poner dos argumentos en absoluto.
chrome.tabs.update({url: 'http://example.com'});