「http-on-modify-request」でオブザーバーを使用して、HTTP リクエスト (および対応する他のオブザーバーとの応答) を分析しています。
HTTPリクエスト/レスポンスがメインフレームの読み込み(実際のページDOM)かどうかを判断することはできますか? 別のリソース (画像、css、sub_frame など) とは対照的に。
「http-on-modify-request」でオブザーバーを使用して、HTTP リクエスト (および対応する他のオブザーバーとの応答) を分析しています。
HTTPリクエスト/レスポンスがメインフレームの読み込み(実際のページDOM)かどうかを判断することはできますか? 別のリソース (画像、css、sub_frame など) とは対照的に。
ドキュメントには、ここで探している答えのほとんどが含まれており、addon-sdk で使用するために以下に変更しました。
場所と場所を比較することで、IFRAME を監視できtop.document
ます。
画像の読み込みなどを検出する簡単な方法はないと思うので、IFRAME ではない最初のヒットだけを監視し、それ以外はすべて css/image/script コンテンツの読み込みと見なすことをお勧めします。
var chrome = require("chrome");
var httpmods = {
observe : function(aSubject, aTopic, aData) {
console.log("observer", aSubject, aTopic, aData);
aSubject.QueryInterface(chrome.Ci.nsIHttpChannel);
var url = aSubject.URI.spec;
var dom = this.getBrowserFromChannel(aSubject);
if (dom) {
if (dom.top.document && dom.location === dom.top.document.location) {
console.log("ISN'T IFRAME");
} else {
console.log("IS IFRAME");
}
}
},
getBrowserFromChannel: function (aChannel) {
try {
var notificationCallbacks =
aChannel.notificationCallbacks ? aChannel.notificationCallbacks : aChannel.loadGroup.notificationCallbacks;
if (!notificationCallbacks)
return null;
var domWin = notificationCallbacks.getInterface(chrome.Ci.nsIDOMWindow);
return domWin;
}
catch (e) {
dump(e + "\n");
return null;
}
}
}
require("observer-service").add("http-on-modify-request", httpmods.observe, httpmods);