chrome.webRequest.onBeforeRequest.addListener Cannot read property 'onBeforeRequest' undefined
Ich versuche meine eigenen bauen chrome-Erweiterung, und ich versuche, fügen Sie einen Ereignishandler mithilfe onBeforeRequest
.
Meine manifest.json
:
{
"manifest_version": 2,
"name": "My extension",
"description": "some descrpition",
"version": "1.0",
"permissions": [
"activeTab",
"tabs",
"webRequest",
"webNavigation",
"management",
"http://*/*",
"https://*/*"
],
"background": {
"scripts": [
"js/jquery-2.1.4.min.js",
"js/background.js"
],
"persistent": true
},
"browser_action": {
"default_icon": "imgs/img.png",
"default_title": "extension"
},
"icons" : {
"64" : "imgs/vergrootglas.png"
}
}
Meine background.js
:
function callback(param1,param2,param3){
alert(param1);
alert(param2);
alert(param3);
}
//alert("test");
chrome.webRequest.onBeforeRequest.addListener(callback);
Habe ich diese geladen in meinem chrome. Aber jedesmal bekomme ich diese Meldung in meiner Konsole:
Uncaught TypeError: Cannot read property 'onBeforeRequest' von
undefined
Ich kann nicht herausfinden, was ich bin oding falsch, ich habe dies gefunden:
https://developer.chrome.com/extensions/webRequest
Aber das Beispiel der code scheint zu sein, ziemlich das gleiche wie das, was ich Tue.
Was vermisse ich hier?
- Sie können nicht tun, in einem content-script AFAIK
- Möglich, Duplikat der CHROM-WebRequest-APIs Beispiel-Fehler: "onBeforeRequest" kann nur verwendet werden, in der extension-Prozesse
- So, wie soll ich das dann machen?
- die Kommunikation zwischen dem Skript-Erweiterung, und der Inhalt Skript verwenden, was bedeutet, dass chrome extension-API gibt Ihnen (ich kenne nur firefox addons sorry, Sie verwenden
?.port.emit
und?.port.on
wo ? istself
oder etwas anderes - nicht sicher, dass chrom die gleiche Weise funktioniert - So, ich habe mich verändert, meine
manifest.json
so wird das Skript im hintergrund ausgeführt. Das ist, was ich verstanden von der von Ihnen angegebenen url. - das funktioniert auch ... ich nahm an, Sie musste etwas tun, in einem content-script
- Nun, ich kann eine Warnung sobald die extension geladen wird. Aber wenn ich einen event-handler passiert nichts und ich bekomme keine Fehler oder Warnungen.
- dies macht keinen Sinn. Können Sie laden Sie die Erweiterung, und verbinden Sie es in einem Kommentar hier? Auch die Verwendung
console.log
stattalert
. - Bitte aktualisieren Sie den rest der Frage, und nicht nur den code. Die Fehlermeldung, die Sie beschreiben, nicht mehr gilt. Ich kann Ihre Frage beantworten, wenn Sie die änderungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den obigen Ausführungen machen keinen Sinn für mich. Es ist ein hintergrund-script oben, und es scheint die richtigen Berechtigungen haben... Einige zusätzliche Kommentare, die helfen könnten...
Müssen Sie einen hintergrund-Seite in der manifest-Datei und die entsprechenden Berechtigungen in der manifest-so wird der hintergrund der Seite zugreifen können, die das webRequest-APIs. Siehe dieses Beispiel: chrome.webRequest nicht funktioniert?
Als Mihai erwähnt, wenn Sie brauchen, um den Inhalt Skript ausführen der Aktion prüfen Sie diese Seite aus: https://developer.chrome.com/extensions/messaging
Fügen Sie diese zu Ihrem Inhalt Skript (kann man ändern Gruß zum handeln und Hallo an die Aktion, die die hintergrund-Skript ausführen soll):
Fügen Sie diese zu Ihrem hintergrund-Seite (Sie können tun, wenn Aussagen und Registrierungsvorgang verschiedene Aktionen basierend auf der Nachricht):
Ich lief in ein ähnliches Problem, außer das problem bei mir war nichts mit Berechtigungen und es war in der Tat ein Webpack Problem.
Mein hintergrund Skript wurde versehentlich gebündelt mit meinem Inhalt Skript. Hintergrund js wurde den Export bestimmte Konstanten, die content-Skript, die verwendet wurde, wodurch Methoden beschränkt sich auf hintergrund-Datei (wie
chrome.webRequest
) werden als Teil der content-Skript, also der kann nicht Lesen-Eigenschaft undefined...