FirefoxアドオンSDK拡張でHTTPリクエストを取得しています。リクエストに関連付けられたDOMウィンドウを取得する必要があります。しかし、私はNS_NOINTERFACE
エラーが発生しています。FirefoxアドオンでHTTPリクエストを行ったDOMウィンドウを取得する
は、ここに私のコードです:私はnsIDOMWindow
とnsILoadContext
の両方を試してみた
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();
が、NS_NOINTERFACE
エラーは常にwindow
オブジェクトを取得しようとする試みに表示されます。私は最終的に要求を開始したドキュメントのURLを取得するには、例えば
httpRequest.notificationCallbacks.getInterface(Ci.nsILoadContext).topFrameElement
を経由して、私は必要なデータを取得するために管理している
*コンソールメッセージ情報**を質問に「コードブロック」**に含まれるテキストとして入力してください。エラーによってテキストが伝えられないものが生成された場合は、エラーのイメージが役立つ場合があります。しかし、ほとんどの場合、コンソールメッセージのイメージを持つことは、それらをテキストとして持つことよりも有意に少なくなります。テキスト形式の場合は、コピー、貼り付け、検索が可能です。テキストとして、彼らは**多くの**より多くの質問に答えると、人々は将来同様の問題に答えを見つけることを試みています。 – Makyen
私は落札して、質問にテキストとして含まれているエラー情報を持たないため、投票を終了することに投票しました。エラーメッセージをテキストとして質問に入れると、私は下向き投票を削除し、近く投票を取り消す。その場合、私は上向きに投票することがあります。 '@ Makyen'とコメントして、変更の通知を受けてください。 – Makyen
@Makyenが助けてくれてありがとう、更新しました。 –