我正在尝试将 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)"附加到工具栏按钮时,此函数可以很好地将脚本附加到当前页面,但我不知道如何访问新打开的选项卡中的窗口,或者如果我应该从等式中删除窗口并以另一种方式访问文档。
最佳答案
您正在寻找 contentWindow
,它是 browser
元素的一个属性。
给定一个tab
,调用gBrowser.getBrowserForTab
获取与 tab
关联的 browser
元素。然后访问 browser
的 contentDocument
或 contentWindow
属性元素(它们等同于您应该已经熟悉的 document
和 window
对象)。
另外——如果我没记错的话——除了监听事件之外,你还需要监听 contentWindow
的 "load"
事件选项卡
。
关于javascript - 如何访问新打开的选项卡的窗口对象? [在 Firefox 扩展中],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856580/