@ Владимир Палант Я приму к сведению ваш комментарий.
авляю некоторые новые функциональные возможности в расширение Firefox,Попробуйте еще раз, который перехватывает коды ошибок HTTP (например, 500) и автоматически повторяет загрузку страницы через некоторый интервал.
Захват кодов работает отлично, и я пытаюсь подсчитать общее количество попыток исохранить это на вкладке с помощью Session Store, К сожалению, сейчас я получаю ссылку на окно DOM (черезinterfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow)
), но мне нужна ссылка на вкладку, которая являетсяnsIDOMNode
согласноДокументация nsISessionStore для setTabValue ().
Что у меня есть до сих пор (я вырвал реальную попытку из этого примера):
// This function implements the nsIObserverService interface and observes
// the status of all HTTP channels
observe : function(aSubject, aTopic, aData) {
var httpChannel = aSubject
.QueryInterface(Components.interfaces.nsIHttpChannel);
if (httpChannel.responseStatus == 500) {
var domWindow;
try {
var notificationCallbacks;
if (httpChannel.notificationCallbacks) {
notificationCallbacks = httpChannel.notificationCallbacks;
} else {
notificationCallbacks = aSubject.loadGroup
.notificationCallbacks;
}
var interfaceRequestor = notificationCallbacks
.QueryInterface(Components.interfaces
.nsIInterfaceRequestor);
domWindow = interfaceRequestor
.getInterface(Components.interfaces.nsIDOMWindow);
} catch (e) {
// No window associated with this channel
return;
}
var ss = Components.classes["@mozilla.org/browser/sessionstore;1"]
.getService(Components.interfaces.nsISessionStore);
ss.setTabValue(domWindow, "foo", "bar");
}
},
Это, конечно, не наsetTabValue
с неверным параметром. Как я могу получить вкладку, связанную с окном DOM?
Как альтернативное решение, могу ли я каким-то образом хранить переменные, связанные с DOM-окном, чтобы мне не приходилось очищать память самостоятельно?