1

我正在尝试创建空选项卡并将脚本文件注入其中。

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 创建的选项卡附加脚本?

4

2 回答 2

1

除了现有的选项卡之外,我需要做一些类似的事情——这意味着你可能需要稍微调整一下并监听添加的选项卡的"load"事件contentWindow

设置 attachWorker 功能:

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'(如果适用?):

var options={contentScriptFile:...};
attachWorker(contentWindow, options);

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

来自 sdk 的代码attachWorker()稍作改动版本Worker()(可从您的 jetpack 插件包或mozilla addon-sdk 存储库中获得):
https ://github.com/mozilla/addon-sdk/blob/master/lib/sdk/标签/worker.js

于 2013-04-13T20:00:47.663 回答
0

如果您已经在使用附加 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

于 2013-04-12T18:38:50.247 回答