Update WebExtension webRequest.onBeforeRequest-Listener-URL-Einstellungen aus separatem Skript
Ich erstelle gerade eine WebExtension, in der ich einen Listener für die ausgeführten Webanforderungen registriere:
main.js:
chrome.webRequest.onBeforeRequest.addListener(main_function, {urls: sites}, ["blocking"]);
wosites
ist ein Array mit einer Liste von URLs, die von einer Einstellungsseite geladen wurden.
enn ich diese Einstellungen ändere, die in separaten HTML- und JavaScript-Dateien gespeichert sind, möchte ich den oben genannten Listener so aktualisieren, dass er jetzt die neue Liste der Websites enthäl
Ich habe Probleme, Zugriff auf diesen Listener aus der Einstellungs-JavaScript-Datei zu erhalten, da
onBeforeRequest.removeListener(callback)
erfordert den ursprünglichen Rückruf als Argument.
Weiß jemand, wie ich diesen Listener aus einer anderen JavaScript-Datei aktualisieren kann?
Beispiel für ein Problem (3 Dateien):
manifest.json:
{
...
"permissions": ["webRequest", "webRequestBlocking", "storage"],
"background: { "scripts": ["main.js"] },
"options_ui": { "page":"settings.html" }
}
where settings.html lädt wiederum settings.js.
main.js:
/* I wont type out the code to load this array from settings. You will have to imagine it being loaded */
all_urls = ["http://www.google.com", "http://www.stackoverflow.com"];
function example_callback() {
console.log("Hello World!");
}
chome.webRequest.onBeforeRequest.addListener(example_callback, {urls: all_urls}, ["blocking"]);
settings.js:
/* Again, imagine that the settings are edited by this file and saved to storage. */
all_urls = ["https://www.google.com"];
/* This is where the problem lies. Listener cannot be removed, as callback is not available in this file */
chrome.webRequest.onBeforeRequest.removeListener(); // Wont work
chrome.webRequest.onBeforeRequest.addListener(example_callback, {urls: all_urls}, ["blocking"]);