我正在尝试当用户在Web控制台中输入命令时,在执行之前我在我的插件脚本中获取此命令?
例如,当用户输入命令行“screenshot --fullpage”时,该命令将在执行前发送到我的插件脚本的功能。
我做了一些研究,但我只在Web控制台开启时发现了一个事件。
https://developer.mozilla.org/en-US/docs/Observer_Notifications#Developer_tools
答案 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 () }