estensioni del browser Chrome: Come attivare l'azione della pagina per tutti i link in uscita di una certa pagina?

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

Domanda

Vorrei che la mia azione di pagina da attivare per tutti i link in uscita da una certa pagina. Come potrei fare per fare che? Sono andato oltre i documenti senza alcun risultato. Tutti gli indicatori sarebbe apprezzato!

È stato utile?

Soluzione

  1. Google Chrome API non ha tale API, ma la funzionalità che si desidera può essere implementato usando standard di Google estensioni di Chrome API.
  2. È necessario implementare
  3. Lo script contenuto dovrebbe modificare DOM della pagina che si desidera gestire e sovrascrivere tutti i link in uscita con il tuo javascript personalizzato che sarà fare alcune cose e aprire link cliccato.

Per modificare link href si può fare qualcosa di simile:

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);
}

UPDATE 1.

Invece di newHref è possibile generare qualcosa come

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

processOutgoingLinkClick funzione dovrebbe contenere elaborazione effettiva del clic.

Altri suggerimenti

Una curiosità, perché non ti utilizzare gli eventi Chrome Extensions Tab è possibile ascoltare per onUpdated onCreated. Quando un utente fa clic su un link nella pagina andrà e generare un evento all'interno di onUpdated.

Quindi, all'interno della vostra background.html, si può fare:

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

Stessa cosa per onCreated. Poi, mentre il suo carico, si può decidere cosa fare con il vostro pageAction.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top