2016-04-28 15 views
0

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

+0

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. –

+0

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. –

+0

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. –

Antwort

1

ich es sehe. Sie haben Ihre manifest.json zweimal mit Berechtigungen definiert. Entfernen Sie die zweite Berechtigungseigenschaft mit nur activeTab und Sie sollten im Geschäft sein.

Verwandte Themen