我正在使用 Google Closure 编辑器,我需要更改一个按钮(即Link
)的功能。我认为要么我会继承负责的插件(BasicTextFormatter
在这种情况下),要么我会创建一个新插件,以更容易为准。我的假设是,这一切都可以通过继承来实现,我不需要更改 Google Closure 文件。
我能够继承goog.editor.Plugin
并放置一些虚拟调试信息来了解如何调用它。
goog.provide('project.LinkPlugin');
goog.require('goog.editor.Plugin');
project.LinkPlugin = function() {
goog.editor.Plugin.call(this);
}
goog.inherits(project.LinkPlugin, goog.editor.Plugin);
project.LinkPlugin.prototype.getTrogClassId = function() {
return 'projectLinkPlugin';
}
project.LinkPlugin.prototype.isSupportedCommand = function(command) {
console.log('is supported ' + command);
return command == 'myLink';
};
project.LinkPlugin.prototype.execCommandInternal = function(command, var_args) {
console.log('exec command ' + command);
}
我注册了插件。
var editor = new goog.editor.Field('rtfEditor');
editor.registerPlugin(new project.LinkPlugin());
editor.registerPlugin(new goog.editor.plugins.BasicTextFormatter());
...
然后我不确定如何添加我的按钮,所以我试图以丑陋的方式来做(至少现在)
var buttons = [
...
goog.editor.Command.FONT_SIZE,
'myLink',
goog.editor.Command.UNDO,
...
];
var toolbar = goog.ui.editor.DefaultToolbar.makeToolbar(buttons, toolbarDiv);
然后我被卡住了。有关按钮的信息在其中defaulttoolbar.js
,但我还没有找到一种在BUTTONS_
不修改 GC 代码的情况下将按钮添加到数组中的方法。周围的一切都很好地组合和继承,我觉得必须有一种方法来实现它。加上插件的概念表明添加一些东西应该相当容易和直接。
谷歌搜索后,我发现的只有this和this。这两种方法都需要更改 GC 代码。
我错过了什么?
TL;DR 版本: 有没有一种干净的方法可以将我自己的插件添加到 GC 编辑器中?
如果修改(即继承)一个插件而不是添加一个插件更容易,那该怎么做?如何指定,execCommandInternal
应该调用我的,而不是原来的?
编辑:好的,我发现按钮可以是字符串数组,也可以是goog.ui.Control
. 所以这可能会解决这一步。反正。我会继续努力。不过,如果有人知道某个链接,所有内容都很好地总结了,或者有人最近做了并且可以在这里总结,我将不胜感激。