我正在使用“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);