如何访问新打开的选项卡的窗口对象? [在firefox扩展中]

时间:2013-04-06 22:05:18

标签: javascript firefox-addon xul

我正在尝试将Greasemonky脚本转换为Firefox的扩展程序,并且我试图让我的扩展程序在打开新选项卡时自动将简单脚本附加到任何网页。我正在从Greasemonkey转换脚本,因为我想利用高级首选项和菜单选项。

我使用以下方法访问标签:

var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabAdded, false);

function tabAdded(event) {
var newtabwindow = event.target.____ //I don't know what goes here
//attach script to newtabwindow
}

我的目标是在使用此功能加载后,将脚本附加到新标签中的文档中:

function scriptrunner(targetwindow) {
var myScript = targetwindow.content.document.createElement('script');
    myScript.type = 'text/javascript';
    myScript.setAttribute('src','chrome://addonname/content/addonscript.js');
    targetwindow.content.document.getElementsByTagName('head')[0].appendChild(myScript);
}

当使用oncommand =“scriptrunner(window)”附加到工具栏按钮时,此功能可以将脚本附加到当前页面,但我不知道如何在新打开的选项卡中访问该窗口,或者如果我应该从等式中删除窗口并以另一种方式访问​​文档。

1 个答案:

答案 0 :(得分:2)

您正在寻找contentWindow,这是browser元素的属性。

如果有tab,请致电gBrowser.getBrowserForTab以获取与browser相关联的tab元素。然后访问browser元素的contentDocumentcontentWindow属性(这些属性相当于您应该熟悉的documentwindow对象。 / p>

另外 - 如果我没弄错的话 - 除了听"load"的事件外,你还需要听contentWindow tab事件。< / p>