JavaScript chrome.webRequest is not a function

Hallo,

es geht um ein addon welches ich von firefox nach edge portiere.

ich bekomme den im Betreff genannten Fehler
im Firefox klappt es einwandfrei

function listener(details) {
var tmp = "";
if (details.url.substring(0,42) == 'https://myurl/json?') {
var filter = chrome.webRequest(details.requestId);
var decoder = new TextDecoder("utf-8");
var encoder = new TextEncoder();
filter.ondata = event => {
var str = decoder.decode(event.data, {stream: true});
console.log('part ' + str);
filter.write(encoder.encode(str));
filter.onstop = event => {
console.log('komplete ' + tmp);
filter.disconnect();
};
tmp = tmp + str;
};
};
return {};
};

chrome.webRequest.onBeforeRequest.addListener(
listener,
{urls: ["<all_urls>"], types: ["xmlhttprequest"]},
["blocking"]
);

kann mir jemand sagen was beim chrome anders sein muss ?

danke caddy
 
webRequest sowie webRequestBlocking im Manifest in den permissions?
 
###Zaunpfahl### schrieb:
Javascript:
chrome.webRequest.onBeforeRequest.addListener(
    listener,
    {
        urls: ["<all_urls>"],
        types: ["xmlhttprequest"]
    },
    ["blocking"]
);

Wieso ist dass denn so schrecklich formatiert? Also mir vergeht da die Lust das zu lesen, sorry.
Wie hättest du es denn gerne damit ich eine Antwort bekomme ?
Ergänzung ()

bog schrieb:
webRequest sowie webRequestBlocking im Manifest in den permissions?
ja beides

Code:
"permissions": [
    "webRequest",
    "<all_urls>",
    "tabs",
    "storage",
    "unlimitedStorage",
    "webRequestBlocking"
  ]
 
du hast den code aber nicht in 'nem content script stehen, oder?
 
bog schrieb:
du hast den code aber nicht in 'nem content script stehen, oder?
Hallo bog,

danke für Deine Antwort.
Nein, er steht im backgroundscript.js.
Das Ganze funktioniert seit Jahren unter Firefox klasse.
Jetzt wurde Edge als Browser vorgegeben, deswegen muss ich das Ganze portieren.
Der REst funktioniert, nur diese Stelle nicht ... und vermutlich eine weitere zu der ich noch nicht komme.

Das Addon liest Antworten von einem Webrequest aus und verarbeitet sie.
Es ist eine Interne Anwendung.
Später ruft Sie noch weitere Daten ab.

Grüße Caddy
 
bog schrieb:
Achso. Ich las das völlig falsch, Pardon. Der Fehler steckt ja im listener. Möglicherweise sieht da die API anders aus als in Firefox. In Chrome (und damit auch dem neuen Edge) sind RequestFilter jedenfalls so definiert:

https://developer.chrome.com/docs/extensions/reference/webRequest/#type-RequestFilter

Reicht das schon?

Hallo Bog,

vielen Dank für diesen Hinweis.

Die Daten kommen in mehreren happen, die ich dann bei onCompleted als einen stream in einer variable verarbeiten will.
Ich bekomme es leider nicht hin die Daten in eine Variable zusammen zu fassen.
Es ist noch schlimmer ich bekomme noch nicht mal die "happen" angezeigt :-(

Wenn es dir möglich ist würde ich mich über eine kleine code freuen ...


Danke Caddy
 
chrome extension samples repo.

ich hab mit requestfilters noch nicht gearbeitet (und firefox extensions auch nicht), aber der chrome doku nach funktioniert der workflow so nicht.

vielleicht waer's aber ganz praktisch, wenn du erst mal genau erklaerst, was dein ziel ist. soweit ich das verstehe, versuchst du, den inhalt kompletter requests aus deiner extension heraus abzugreifen? den empfangenen (response) oder den gesandten (request) body? ersteres geht mit der chrome extension API nicht.

die typische herangehensweise fuer sowas waere glaube ich ein content script, das XHR/fetch ueberschreibt und fuer requests darauf einen alternativen listener implementiert (der bei bedarf mit der background page kommuniziert).
 
Hallo bog,

vielen Dank das du dir Zeit nimmst für meine Herausforderung.

Aktuell soll mein Plugin nur die Response verarbeiten.
Sprich das was ankommt wird gesammelt in einer Variable gespeichert und verarbeitet.
Es muss also so lange die Response gelesen werden bis das complete kommt.
Eigentlich ganz einfach, wenn man aber Firefox gewohnt ist erst mal unverständlich :-(
Leider bin ich auch nur Anfänger in dieser Art der Programmierung deswegen meine komischen Fragen.
Wie Du schreibst geht aber genau das scheinbar nicht so einfach im chrome/edge wie im Firefox.

vielen Dank

caddy
 
Zurück
Oben