如何在gBrowser.addTab()创建的选项卡中附加脚本?

时间:2013-04-12 14:25:15

标签: firefox firefox-addon firefox-addon-sdk

我正在尝试创建空标签并将脚本文件注入其中。

var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator("navigator:browser");
var tabbrowser = browserEnumerator.getNext().gBrowser;
var newTab = tabbrowser.addTab("");

使用pageMod我可以用

附加文件
contentScriptFile: [data.url("jquery-1.9.1.min.js")],

如何为gBrowser创建的标签附加脚本?

2 个答案:

答案 0 :(得分:1)

除了现有标签之外,我需要做类似的事情 - 这意味着您可能需要稍微调整一下并听取添加标签的"load"的{​​{1}}事件:

设置attachWorker功能:

contentWindow

当标签可用时:

let contentWorker=require("sdk/content/worker");

function attachWorker(contentWindow,options){    
    options.window = contentWindow;
    let worker = contentWorker.Worker(options);
    worker.once("detach", function detach() {
        worker.destroy();
    });
    return worker;
}

加载var browser=gBrowser.getBrowserForTab(tab); var contentWindow=browser.contentWindow; 时 - 聆听contentWindow contentWindow(如果适用?):

'load'

内容工作者的文档:
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/content/worker.html

来自var options={contentScriptFile:...}; attachWorker(contentWindow, options); 的代码是来自sdk的attachWorker()函数的略微更改版本(可从您的jetpack插件包或mozilla addon-sdk repository中获得):
https://github.com/mozilla/addon-sdk/blob/master/lib/sdk/tabs/worker.js

答案 1 :(得分:0)

如果您已经使用了Add-on SDK,则可以使用tabs模块:

var tabs = require("sdk/tabs");

tabs.on('ready', function(tab) {
  tab.attach({
      contentScript:
        'document.body.style.border = "5px solid red";'
  });
});

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/tabs.html#attach%28options%29