2009-05-18 48 views
2

我正在写一个Firefox扩展,真的需要听取TabOpen事件并获取有关已打开的选项卡的一些详细信息。但我不知道如何从我的回调收到的event对象中获得实际选项卡。在event.data的某个地方?有没有办法检查这个对象?如何使用Firefox FUEL获取TabOpen事件中的选项卡?

,我到目前为止已经试过,但它不工作的一些代码:

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

回答

1

在你的代码,事件.data会给你一个BrowserTab object。如果你想要标签的当前URI,你需要tab.uri.spec作为字符串版本,或者如果你想要nsIURI object,那么只需要tab.uri

+0

谢谢,这工作很好。你能否告诉我这个秘密,你怎么知道这件事?因为在MDC中我找不到任何关于此的信息。 – vava 2009-05-19 02:32:56

+0

我是一名Mozilla开发人员,所以我首先去了源代码来看看事情。我不确定源代码可以帮助那些不太熟悉它的人... 我会让我们的文档人员知道我们可能在这里缺乏一点。 – sdwilsh 2009-05-19 13:44:12

0

这里距离MDC一个例子,但不使用燃料:

// 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

嗯,这绝对是作弊:)我宁愿更多的版本不可知论的东西。 – vava 2009-05-18 14:23:54

0

我已经向MDC添加了一些新内容,应该可以帮助解决这个问题;如何拉动标签对象了TabOpen事件的信息现在在这里的例子可供选择:

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

也做了一些其他的清理,而我在这。希望这会有所帮助(特别是一旦搜索索引刷新)。

相关问题