Ich habe versucht, eine Chrome-Erweiterung zu schreiben, und ich muss XHR-Anfragen gleich zu Beginn der Anfrage erfassen, aber auch nach Abschluss. Bisher verstehe ich, dass ich verwenden müssen:chrome.webRequest.onBeforeRequest zum Erfassen von AngularJS XHR-Anfragen
- chrome.webRequest.onBeforeRequest und
- chrome.webRequest.onCompleted
Hier ist meine Manifest-Datei:
{
"name": "Koala",
"version": "1.0",
"manifest_version": 2,
"description": "test",
"browser_action": {
"default_icon": "koala.png",
"default_popup": "koala.html"
},
"permissions": [
"<all_urls>",
"activeTab",
"webRequest"
],
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"]
}],
"background":{
"persistent": true,
"scripts": ["background.js"]
},
"permissions": [
"activeTab"
]
}
Der Ereignis-Listener muss in das Hintergrundskript gehen. Hier Auszug aus meiner background.js Datei:
chrome.webRequest.onBeforeRequest.addListener(function(details){
//message to context.js and koala.js
},{urls: ["<all_urls>"],types: ["xmlhttprequest"]},[]);
chrome.webRequest.onCompleted.addListener(function(details){
//message to context.js and koala.js
},{urls: ["<all_urls>"],types: ["xmlhttprequest"]},[]);
Ich habe versucht, den Inhalt der Details anzeigt Objekt über Alarm, console.log, Messaging, aber es scheint nur, dass die Ereignis-Listener nie etwas einzufangen. Ich möchte, dass dieser Code jede Art von HTML-Fragment-Injektion erfasst, nicht nur AngularJS, sodass ich mich nicht allein auf AngularJS-Ereignisse verlassen kann. Fehle ich etwas Offensichtliches?
Danke,
Alban
Für Hintergrundskripts sollten Sie in der Lage sein, die Konsole zu sehen, aber Sie müssen den Debugger in der chrome: // extensions-Ansicht starten, indem Sie neben der inspect-Ansichtsbeschriftung unter Ihrer Erweiterung auf Ihr Hintergrundskript klicken. –
Hallo Gordon, danke für deinen Kommentar. chrome.webRequest ist nicht definiert. Ich habe überprüft, indem ich auf die Hintergrundseite zugegriffen habe, das chrome-Objekt existiert, aber es gibt kein webRequest-Objekt. –
Ich glaube, ich habe das Problem gefunden. In meiner Manifestdatei wurden Berechtigungen zweimal deklariert. Als ich die 2. Deklaration entfernte, erkannte meine Hintergrundseite das chrome.webRequest Objekt. –