Chrome Browser-Erweiterungen: Wie Seite Aktion für alle ausgehenden Links von einer bestimmten Seite aktivieren?
-
21-09-2019 - |
Frage
Ich würde meine Seite Aktion wie für alle ausgehenden Links von einer bestimmten Seite aktiviert werden. Wie könnte ich mich über das zu tun? Ich habe über die Dokumentation ohne Erfolg gegangen. Alle Hinweise würden geschätzt!
Lösung
- Google Chrome-API nicht über eine solche API, aber Funktionen, die Sie wollen, können unter Verwendung von Standard-Google-Chrome-Erweiterungen API implementiert werden.
- Sie müssen Content-Skript implementieren
- Ihr Inhalt Skript sollte DOM der Seite ändern Sie alle ausgehenden Links mit Ihrer benutzerdefinierten Javascript zu handhaben und außer Kraft setzen, die ein paar Sachen und offen klickten Link tun.
Link ändern href Sie etwas tun können:
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.
Statt newHref können Sie so etwas wie
erzeugen a.href = "javascript:processOutgoingLinkClick('" + element.href + "')"
Funktion processOutgoingLinkClick
sollte eigentliche Verarbeitung des Klicks enthalten.
Andere Tipps
Nur eine Neugier, warum willst du nicht verwenden, um die Chrome-Erweiterungen Tab Events können Sie für OnUpdated OnCreated hören. Wenn ein Benutzer klickt auf einen Link auf der Seite wird es ein Ereignis innerhalb OnUpdated gehen und Feuer.
So in Ihrem background.html, können Sie tun:
chrome.tabs.onUpdated.addListener(function(tabId, info) {
if (info.status === 'loading')
console.log('Loading url ... ' + info.url)
});
Das Gleiche gilt für OnCreated. Dann, während seines Ladens, können Sie entscheiden, was Sie mit Ihrem pageAction zu tun.