Firefox Addon:特定命令行上的事件

时间:2015-12-16 18:44:10

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

我正在尝试当用户在Web控制台中输入命令时,在执行之前我在我的插件脚本中获取此命令?

例如,当用户输入命令行“screenshot --fullpage”时,该命令将在执行前发送到我的插件脚本的功能。

我做了一些研究,但我只在Web控制台开启时发现了一个事件。

https://developer.mozilla.org/en-US/docs/Observer_Notifications#Developer_tools

1 个答案:

答案 0 :(得分:0)

此处发布的解决方案 - Compile with options

好的,我们走了,这有效:

var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});

var tmp = {};
Cu.import("resource://devtools/client/shared/DeveloperToolbar.jsm", tmp);

var gcliInit = require('devtools/shared/gcli/commands/index');
var { TargetFactory } = require("devtools/client/framework/target");

var a = new tmp.DeveloperToolbar(window, document.getElementById("developer-toolbar"));

var sysTarget= TargetFactory.forTab(a._chromeWindow.gBrowser.selectedTab);

gcliInit.getSystem(sysTarget).then(
    system => {
        console.log('system:',system);
        system.addItems([{
            name: 'greet',
            description: 'Show a greeting',
            params: [{
                name: 'name',
                type: 'string',
                description: 'The name to greet'
            }],
            returnType: 'string',
            exec: function(args, context) {
                return 'Hello, ' + args.name;
            }
        }]);
    },
    y => console.error('y:',y)
);

注意,Firefox 45中的路径会发生变化。因此,此代码适用于Fx45 +,您可以使用resource://gre/modules/devtools/Loader.jsm代替resource://devtools/shared/Loader.jsm

TargetFactor是我失踪的关键组件,重要的是,它有这些方法:

 Object { forTab: function (), forRemoteTab: function (), forWorker: function (), isKnownTab: function () }