我正在尝试将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)”附加到工具栏按钮时,此功能可以将脚本附加到当前页面,但我不知道如何在新打开的选项卡中访问该窗口,或者如果我应该从等式中删除窗口并以另一种方式访问文档。
答案 0 :(得分:2)
您正在寻找contentWindow
,这是browser
元素的属性。
如果有tab
,请致电gBrowser.getBrowserForTab
以获取与browser
相关联的tab
元素。然后访问browser
元素的contentDocument
或contentWindow
属性(这些属性相当于您应该熟悉的document
和window
对象。 / p>
另外 - 如果我没弄错的话 - 除了听"load"
的事件外,你还需要听contentWindow
tab
事件。< / p>