Chrome-Erweiterungen: webRequest.onCompleted.addListener + XHR
Ich versuche, die Chrome-Erweiterung um einen Inhalt einer Seite, die beim surfen auf einer anderen Website.
Ich nenne das "XMLHttpRequest" das auftreten von Chrom.webRequest.onCompleted
Aber immer, wenn ich die Methode aufrufen XHR.Öffnen Sie die folgende Fehlermeldung erhalten: [Ausnahme: DOMException] in die Felder Status und StatusText von XHR-Objekt.
Irgendeine Idee ?
Dank.
Ich bin mit dem folgenden code:
chrome.webRequest.onCompleted.addListener(
function(details) {
if (details.url.substring(0, 23) == "https://www.google.com/") //I know I do not need this
{
console.info("URL :" + details.url);
FindData("www.altavista.com");
}
},
//filters
{
urls: [
"http://*.google.com/*",
"https://*.google.com/*",
],
types: ["image"]
},
["responseHeaders"]);
function FindData(strURL) {
var req = new XMLHttpRequest();
req.open("GET", strURL, true);
req.onreadystatechange=function() {
if (req.readyState==4) {
if (req.status==200)
{
console.info("Sucess!");
console.info("Data: " + req.responseText);
}
else if (req.status==404) console.info("URL doesn't exist!")
else console.info("Error: Status is " + req.status)
}
}
req.send();
}
Mein manifest.json
{
"name": "Test",
"version": "1.0",
"manifest_version": 2,
"description": "The first extension that I made.",
"browser_action": {
"default_popup": "popup.html"
},
"permissions": ["webRequest", "webRequestBlocking",
"http://www.altavista.com/*",
"http://*.google.com/*",
"https://*.google.com/*"]
}
InformationsquelleAutor brunossilva | 2012-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ein Protokoll.
www.altavista.com
löstchrome-extension://..../www.altavista.com
. Mithttp://www.altavista.com
sollte Ihr problem lösen.FindData("http://www.altavista.com");
Diese hat nicht funktioniert entweder.Habe ich eine demo-Erweiterung basierend auf Ihren code, und es funktioniert wie erwartet. Ich vermutete, dass Sie möchten, um dauerhaft fangen alle google-Besuche, die während der Lebensdauer der Erweiterung. Anpassungen: 1. Ich habe kopieren-einfügen den code in eine Datei namens
background.js
. In der manifest habe ich verwiesen, diese Datei mit der"background":{"scripts":["background.js"]}
. 2. Ich habe entfernt das "ich weiß, ich brauche nicht diese"wenn-block. Es funktioniert: background.js, manifest.json.Ihre aktuelle code kann nicht funktionieren, wenn
http://www.google.com/
leitet z.B.http://www.google.nl/
, weil Sie nicht erklären, der die Berechtigung zum Zugriff auf die andere Domäne, in der manifest-Datei. Stellen Sie sicher, dass Sie überprüfen diese.1) Wie kann ich Debuggen mit Skript im hintergrund ? 2) Der Hörer fängt alles OK. Das problem passiert, wenn ich den Aufruf der Open-Methode des XHR. Im debug-Modus sehe ich den Inhalt des status-Feld immer die Fehlermeldung: [Exception: DOMException]. In Ihrem Beispiel, die Zeile unten arbeiten?
console.info("Data: " + req.responseText);
Ich setzen Sie ein "/" nach dem link, false XHR.Öffnen und ... Erfolg ! 'FindData("altavista.com/"); " Dank !
InformationsquelleAutor Rob W