Ich nehme die HTTP-Anfragen in einer Firefox Add-on SDK Erweiterung auf. Ich muss das mit der Anfrage verknüpfte DOM-Fenster abrufen. Ich bekomme jedoch einen NS_NOINTERFACE
Fehler.Firefox-Add-on bekomme das DOM-Fenster, das eine HTTP-Anfrage gemacht habe
Hier ist mein Code:
var httpRequestObserver = {
observe: function (subject, topic, data) {
var httpRequest = subject.QueryInterface(Ci.nsIHttpChannel);
var requestUrl = subject.URI.host;
var domWin;
var assWindow;
console.log('URL: ', requestUrl);
try {
domWin = httpRequest.notificationCallbacks.getInterface(Ci.nsIDOMWindow);
assWindow = httpChannel.notificationCallbacks.getInterface(Ci.nsILoadContext)
.associatedWindow;
console.log(domWin);
} catch (e) {
console.log(e);
}
// console.log('TAB: ', tabsLib.getTabForWindow(domWin.top));
var hostName = wn.domWindow.getBrowser().selectedBrowser.contentWindow.location.host;
console.log('HOST: ', hostName);
},
get observerService() {
return Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService);
},
register: function() {
this.observerService.addObserver(this, 'http-on-modify-request', false);
},
unregister: function() {
this.observerService.removeObserver(this, 'http-on-modify-request');
}
};
httpRequestObserver.register();
ich beide nsIDOMWindow
und nsILoadContext
versucht haben, aber NS_NOINTERFACE
Fehler erscheint immer auf dem Versuch, das window
Objekt zu erhalten.
* Bitte *, [bearbeiten] Sie die Frage, um Informationen zur Konsolennachricht ** in die Frage als Text einzufügen, der in einem 'Codeblock' ** enthalten ist. Wenn der Fehler etwas generiert, das der Text nicht übermitteln kann, kann ein Bild des Fehlers hilfreich sein. In den meisten Fällen ist es jedoch wesentlich weniger hilfreich, ein Bild von Konsolennachrichten zu haben, als sie als Text zu haben. Im Textformat können sie kopiert, eingefügt und durchsucht werden. Als Text sind sie ** viel nützlicher, sowohl für die Beantwortung der Frage als auch für Leute, die versuchen, die Antwort auf ihr ähnliches Problem in der Zukunft zu finden. – Makyen
Ich habe abgelehnt und votet, um zu schließen, weil die Fehlerinformationen in der Frage nicht als Text enthalten sind. Wenn Sie die Fehlermeldungen in die Frage als Text eingeben, werde ich meine Down-Vote entfernen und meine enge Abstimmung zurückziehen. In diesem Fall kann ich abstimmen. Bitte hinterlassen Sie einen Kommentar mit '@ Makyen', damit ich über die Änderung informiert werde. – Makyen
@Makyen danke für Hilfe, aktualisiert. –