Mozcmd格式
mozcmd格式提供了一种简单的方法用来存储GCLI命令.对于Firefox用户来说,可以将 devtools.commands.dir
的字符串值设置为包含若干扩展名为mozcmd
的文件的目录路径.
比如,如果 devtools.commands.dir
指向 C:\mozcmd
(或者/Users/me/mozcmd
[Mac/Unix]),则Firefox会从那个目录读取mozcmd文件.
语法
mozcmd文件的格式基于 JSON,不过添加了存储函数的能力 - 比如 exec
函数.
该文档的跟节点是一个数组,可以包含若干个命令对象,这些对象将自动的作为参数传递给 gcli.addCommand()
.
一个mozcmd文件示例
下面的例子来于 the demo repository.
[ { name: 'hello', description: 'Show a message', params: [ { name: 'name', type: 'string', description: 'Who to say hello to', } ], exec: function(args, context) { return 'Good evening, ' + args.name; } } ]
多个命令可以放在一个文件中,并且命令的名字是由"name"属性决定的,而不是由该mozcmd文件的文件名决定的.
只能在函数定义内部使用注释,其他位置不可以.
当一个命令被执行时, this
会指向包含这个方法的对象, 所以this.name就是当前命令的名字
,如果需要进行一些设置,则应该首先执行这些设置,任何返回的结果应该缓存在this上
.
安全性
The idea is to provide the user with the security that just having a mozcmd file available to Firefox is not a security risk, they need to access the command before any JavaScript is executed.
(注意 '访问' 并不意味着需要执行这个命令. 命令可以提供自定义参数的函数. '访问' 指的是在命令行中键入命令的名称 (不一定是否按了回车键)
mozcmd格式的当前实现只是简单的在沙箱中执行脚本.这并没有提供承诺的保护水平.Bug 767912 提出:解析器应该进行升级.
进阶文档
查看 documentation about writing commands.
扩展mozcmd格式
mozcmd格式被设计为可扩展的支持注册类型和字段的格式,该特性目前还没有启用,不过你可以看看它是被如何设计的.