Ich versuche, meine Chrome-Erweiterung, um die Funktion init()
immer wenn eine neue Seite geladen wird, aber ich habe Probleme zu versuchen, zu verstehen, wie dies zu tun. Von dem, was ich verstehe, muß ich folgend in background.html tun:Chrome Extension-Code vs Content-Skripts vs injizierten Skripts
- Verwenden
chrome.tabs.onUpdated.addListener()
überprüfen, wenn die Seite - Verwendung geändert
chrome.tabs.executeScript
ein Skript auszuführen.
Dies ist der Code, den ich habe:
//background.html
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(null, {code:"init();"});
});
//script.js
function init() {
alert("It works!");
}
Ich bin auch gefragt, ob die init() Funktion den Zugriff auf meine anderen Funktionen in anderen JS-Dateien befinden haben wird?
Sie für die Spitze danken über 'Chrom .tabs.onUpdated' wird zweimal ausgelöst. Also meine Frage ist, wie würde ich 'init()' injizieren? Sollte ich alle meine JavaScripts injizieren? 'init()' wird normalerweise aufgerufen, wenn der Benutzer auf das Browseraktionssymbol klickt, und 'init()' löst eine Reihe anderer Funktionen aus. – Jon
@ user1277607 Wenn es auf eine der globalen Variablen der Seite zugreifen muss, injizieren Sie das Skript. Wenn 'function init' auf den Seiten- und Erweiterungscode zugreifen muss, verwenden Sie ein Inhaltsskript. Siehe die ** [verknüpfte Antwort] (http://stackoverflow.com/a/9517879/938089?building-a-chrome-extension-inject-code-in-a-a-page-using-a-content-script) * * um zu sehen, wie Skripte injiziert werden, und ** [http://stackoverflow.com/a/9636008/938089?chrome-extension-retrieving-gmails-original-message] ** für eine Richtlinie zur Implementierung eines Inhaltsskript, das auf die Variablen der Seite zugreifen muss. –
vielen Dank. Es hat wunderbar funktioniert :) – Jon