我正在尝试使用dijit.Editor小部件。我不需要所有插件,例如粗体,斜体,列表等。通过不将它们包含在插件列表中,它们不会出现在工具栏中。但快捷键映射仍然存在。
我尝试将dijit.Editor子类化并覆盖setupDefaultShortcuts方法,但这似乎无法解决问题。
有没有办法覆盖快捷键映射?
答案 0 :(得分:0)
我不是一个道场专家,所以更好的可能会出现,但我发现实现这一目标的一种方法是改变编辑器类中的成员变量_keyHandlers
。
var editor = new dijit.Editor({plugins:plugins},
dojo.byId('myEditor'));
delete editor._keyHandlers['b'];
第一行将使用更改的插件列表创建新编辑器。第二行删除b
的密钥处理程序,该处理程序为粗体。您可以对要删除的任何其他键执行相同操作。如果你想删除它们,我猜你可以将_keyHandlers
设置为等于新数组。
我不确定为什么覆盖setupDefaultShortcuts不起作用。你在正确的班级中覆盖了它吗?这是dijit._editor.RichText
而不是dijit.Editor
的方法。
希望这有帮助。
答案 1 :(得分:0)
你在问题中所说的对我有用......甚至不必延长,只是通过传递一个新的空函数来破坏这个功能。
dojo.require('dijit.Editor');
dojo.ready(function() {
var ed = new dijit.Editor({
setupDefaultShortcuts: function(){},
}).placeAt(dojo.body());
ed.startup();
});
如果你想扩展,那就简单了:
dojo.require('dijit.Editor');
dojo.ready(function() {
dojo.declare('MiniEditor', dijit.Editor, {
constructor: function() {
//executes after inherited constructor, overriding plugins
this.plugins = [];
},
setupDefaultShortcuts: function(){}
});
var ed = new MiniEditor({}).placeAt(dojo.body());
ed.startup();
});