Я использую Firefox Addon SDK для создания чего-то, что отслеживает и отображает HTTP-трафик в браузере. Аналогично HTTPFox или Live HTTP Headers . Меня интересует, какая вкладка в браузере (если есть) сгенерировала запрос
Используя службу наблюдателя , я отслеживаю события «http-on-explore-response». У меня есть следующий код для идентификации nsIDomWindow, сгенерировавшего запрос:
const observer = require("observer-service"),
{Ci} = require("chrome");
function getTabFromChannel(channel) {
try {
var noteCB= channel.notificationCallbacks ? channel.notificationCallbacks : channel.loadGroup.notificationCallbacks;
if (!noteCB) { return null; }
var domWin = noteCB.getInterface(Ci.nsIDOMWindow);
return domWin.top;
} catch (e) {
dump(e + "\n");
return null;
}
}
function logHTTPTraffic(sub, data) {
sub.QueryInterface(Ci.nsIHttpChannel);
var ab = getTabFromChannel(sub);
console.log(tab);
}
observer.add("http-on-examine-response", logHTTPTraffic);
В основном заимствовано из документации о том, как идентифицировать браузер, сгенерировавший запрос . Некоторые также взяты из надстройки Google PageSpeed Firefox.
Есть ли рекомендуемый или предпочтительный способ перехода от объекта nsIDOMWindow domWin
к элементу вкладки в модуле SDK tabs ?
I ' Я подумал о чем-то хакерском, например, сканировании списка вкладок для одного с URL-адресом, который соответствует URL-адресу для domWin, но тогда мне нужно беспокоиться о нескольких вкладках с одинаковым URL-адресом.