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

标签 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)"附加到工具栏按钮时,此函数可以很好地将脚本附加到当前页面,但我不知道如何访问新打开的选项卡中的窗口,或者如果我应该从等式中删除窗口并以另一种方式访问​​文档。

最佳答案

您正在寻找 contentWindow,它是 browser 元素的一个属性。

给定一个tab,调用gBrowser.getBrowserForTab获取与 tab 关联的 browser 元素。然后访问 browsercontentDocumentcontentWindow 属性元素(它们等同于您应该已经熟悉的 documentwindow 对象)。

另外——如果我没记错的话——除了监听事件之外,你还需要监听 contentWindow"load" 事件选项卡

关于javascript - 如何访问新打开的选项卡的窗口对象? [在 Firefox 扩展中],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856580/

相关文章:

javascript - jquery选择表中tr的第一个td,然后迭代结果并将文本与值进行比较

javascript - 带有较长文本的 Chrome 语音合成

javascript - javascript(或浏览器扩展)如何检测受限功能的使用?

firefox-addon - 如何从 Firefox 插件打开外部应用程序? (例如 : default text editor)

javascript - XUL 如何在菜单按钮中将按钮与菜单分开

javascript - 创建一个对象来合并重复文件

javascript - 从 jquery 中删除本地路径

javascript - 鼠标事件监听器,允许传播到文档

firefox-addon - 如何在没有id的情况下覆盖xul?

javascript - Firefox 扩展中的 Html 弹出 iframe