取消激活Dijit Editor Dojo的快捷键

时间:2011-03-06 00:40:36

标签: javascript dojo

我正在尝试使用dijit.Editor小部件。我不需要所有插件,例如粗体,斜体,列表等。通过不将它们包含在插件列表中,它们不会出现在工具栏中。但快捷键映射仍然存在。

我尝试将dijit.Editor子类化并覆盖setupDefaultShortcuts方法,但这似乎无法解决问题。

有没有办法覆盖快捷键映射?

2 个答案:

答案 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();
});