Extensões do navegador Chrome: Como ativar a ação da página para todos os links de saída de uma determinada página?

StackOverflow https://stackoverflow.com/questions/2483705

Pergunta

Gostaria que minha ação seja ativada para todos os links de saída de uma determinada página. Como posso fazer isso? Eu fui sobre os documentos sem sucesso. Quaisquer indicadores seriam apreciados!

Foi útil?

Solução

  1. O Google Chrome API não possui essa API, mas a funcionalidade que você deseja pode ser implementada usando a API padrão do Google Chrome Extensions.
  2. Você precisa implementar script de conteúdo
  3. Seu script de conteúdo deve modificar o DOM da página que você deseja manipular e substituir todos os links de saída pelo seu JavaScript personalizado, que fará algumas coisas e o link de cliques abertos.

Para modificar o link href, você pode fazer algo assim:

function processLink(element, newHref) {
  var a = document.createElement("a");
  a.href        = newHref;
  a.textContent = element.textContent;
  a.title       = element.title;

  element.parentNode.replaceChild(a, element);
}

Atualização 1.

Em vez de newhref, você pode gerar algo como

a.href = "javascript:processOutgoingLinkClick('" + element.href + "')"

Função processOutgoingLinkClick deve conter o processamento real do clique.

Outras dicas

Apenas uma curiosidade, por que você não usa o Guias de extensões Chrome Eventos Você pode ouvir o OnUpdated OnCreated. Quando um usuário clica em um link na página, ele será despertado um evento no OnUpdated.

Então, em seu segundo plano.html, você pode fazer:

chrome.tabs.onUpdated.addListener(function(tabId, info) {
  if (info.status === 'loading')
    console.log('Loading url ... ' + info.url)
});

A mesma coisa para OnCreated. Então, enquanto está carregando, você pode decidir o que fazer com sua permanência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top