मैं फ़ायरफ़ॉक्स एक्सटेंशन, TryAgain में कुछ नई कार्यक्षमता जोड़ रहा हूं, जो HTTP त्रुटि कोड (उदा। 500) जाल करता है और कुछ अंतराल के बाद पृष्ठ को स्वचालित रूप से लोड करता है।किसी DOM विंडो से जुड़े टैब को ढूंढना
कोड का ट्रैपिंग उत्कृष्ट काम करता है, और मैं पुनः प्रयासों की कुल संख्या और store this in the tab using Session Store का मिलान करने की कोशिश कर रहा हूं। दुर्भाग्यवश, अभी मुझे एक डोम विंडो (interfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow)
के माध्यम से) का संदर्भ मिल रहा है, लेकिन मुझे nsISessionStore docs on setTabValue() के अनुसार nsIDOMNode
एक टैब के संदर्भ की आवश्यकता है।
क्या मैं (इस उदाहरण से बाहर वास्तविक पुन: प्रयास मैं कतरना है) अब तक है:
// 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
पर विफल रहता है। मैं डोम विंडो से जुड़े टैब को कैसे प्राप्त कर सकता हूं?
वैकल्पिक समाधान के रूप में, क्या मैं किसी डीओएम विंडो से जुड़े चर को किसी तरह से स्टोर कर सकता हूं जैसे कि मुझे स्मृति को साफ करने की आवश्यकता नहीं है?
ध्यान दें कि बजाय 'getInterface (Components.interfaces.nsIDOMWindow) की' आप nsILoadContext का अनुरोध करना चाहिए - https://developer.mozilla.org/En/Updating_extensions_for_Firefox_3.5#Getting_a_load_context_from_a_request – Nickolay