Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问新打开的选项卡';什么是窗口对象?[在firefox扩展中]_Javascript_Firefox Addon_Xul - Fatal编程技术网

Javascript 如何访问新打开的选项卡';什么是窗口对象?[在firefox扩展中]

Javascript 如何访问新打开的选项卡';什么是窗口对象?[在firefox扩展中],javascript,firefox-addon,xul,Javascript,Firefox Addon,Xul,我正在尝试将Greasemonky脚本转换为Firefox的扩展,并尝试在打开新选项卡时使扩展自动将简单脚本附加到任何网页。我正在从Greasemonkey转换脚本,因为我想利用高级首选项和菜单选项 我使用以下命令访问选项卡: var container = gBrowser.tabContainer; container.addEventListener("TabOpen", tabAdded, false); function tabAdded(event) { var newtabwin

我正在尝试将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
,它是
浏览器
元素的属性

给定
选项卡
,调用以获取与
选项卡
关联的
浏览器
元素。然后访问元素的
contentDocument
contentWindow
属性(这些属性相当于您应该已经熟悉的
document
window
对象)


此外——如果我没有弄错的话——除了收听
选项卡的事件外,您还需要收听
内容窗口的
加载
事件不工作?从你的描述来看,Mozilla的更适合这份工作。您可以使用将内容脚本附加到URL与模式匹配的任何网页,或者使用模块。我发现示例中删除了侦听TabOpen事件的需要,是的,我必须为窗口使用加载事件侦听器。