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
});
¿Fue útil?

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