2009-05-18 4 views
2

Ich schreibe eine Firefox-Erweiterung und muss wirklich auf TabOpen-Ereignisse hören und einige Details über die Registerkarte erhalten, die geöffnet wurde. Aber ich kann nicht herausfinden, wie bekomme ich eine tatsächliche Registerkarte von event Objekt, das mein Rückruf empfängt. Ist es irgendwo in event.data? Gibt es eine Möglichkeit, dieses Objekt zu inspizieren?Wie bekomme ich einen Tab im TabOpen Event mit Firefox FUEL?

Einige Code, den ich bisher versucht, aber es funktioniert nicht:

Application.activeWindow.events.addListener("TabOpen", 
    function(event) { 
     Application.console.log("TabOpen"); 
     var tab = event.data.target; 
     Application.console.log(tab.uri); 
    } 
); 

Antwort

1

In Ihrem Code, Veranstaltung .data gibt Ihnen eine BrowserTab object. Wenn Sie den aktuellen URI der Registerkarte möchten, möchten Sie tab.uri.spec für die Zeichenfolgenversion oder nur tab.uri, wenn Sie eine nsIURI object möchten.

+0

Danke, das hat wunderbar funktioniert. Kannst du mir auch das Geheimnis erzählen, wie hast du das herausgefunden? Weil ich in MDC nichts darüber finden kann. – vava

+0

Ich bin ein Mozilla-Entwickler, also ging ich zuerst zum Quellcode, um die Dinge zu betrachten. Ich bin mir nicht sicher, ob der Quelltext jemanden helfen würde, der damit nicht vertraut ist ... Ich werde unsere Dokumentationsleute wissen lassen, dass wir hier vielleicht etwas fehlen. – sdwilsh

+0

Unser Dokumentationsleiter hat mich gerade darüber informiert, dass er eine Reihe von Dokumenten hinzugefügt hat, um das zu verdeutlichen. – sdwilsh

0

hier ein Beispiel aus dem MDC aber ohne Brennstoff:

// add event listener 
var container = gBrowser.mPanelContainer; 
container.addEventListener("DOMNodeInserted", exampleTabAdded, false); 

function exampleTabAdded(event) 
{ // listening for new tabs 
    if (event.relatedNode != gBrowser.mPanelContainer) 
    return; //Could be anywhere in the DOM (unless bubbling is caught at the interface?) 

    var browser; 
    browser = event.target.childNodes[1]; 
    // browser is the XUL element of the browser that's been added 
} 
+0

Hm, das ist definitiv Betrug :) Ich würde etwas mehr Version agnostic bevorzugen. – vava

0

Ich habe MDC einige neue Inhalte hinzugefügt, die dabei helfen sollten; Informationen darüber, wie Sie die Registerkarte Objekt aus dem TABOPEN Ereignis ziehen ist jetzt in dem Beispiel hier:

https://developer.mozilla.org/En/FUEL/Window

auch einige andere Reinigung tat, während ich es war. Hoffentlich hilft das (besonders wenn der Suchindex aktualisiert wird).

+0

Danke, das ist großartig! Nicht nur, dass ich eine Antwort auf die Frage erhielt, sondern auch potentielle Antworten auf zukünftige Fragen auf einmal bekam :) – vava

Verwandte Themen