Javascript 停用Dijit编辑器Dojo的快捷键

Javascript 停用Dijit编辑器Dojo的快捷键,javascript,dojo,Javascript,Dojo,我正在尝试使用dijit.Editor小部件。我不需要所有的插件,如粗体、斜体、列表等。如果不将它们包括在插件列表中,它们就不会出现在工具栏中。但是快捷键映射仍然存在 我试图将dijit.Editor子类化并覆盖setupDefaultShortcuts方法,但这似乎并没有解决问题 是否有方法覆盖快捷键映射 我决不是dojo专家,因此可能会有更好的方法,但我发现实现这一点的一种方法是在编辑器类中更改成员变量\u keyHandlers var editor = new dijit.Editor(

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

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


是否有方法覆盖快捷键映射

我决不是dojo专家,因此可能会有更好的方法,但我发现实现这一点的一种方法是在编辑器类中更改成员变量
\u keyHandlers

var editor = new dijit.Editor({plugins:plugins}, 
    dojo.byId('myEditor'));
delete editor._keyHandlers['b'];
第一行将使用修改后的插件列表创建新编辑器。第二行删除
b
的键处理程序,该处理程序将以粗体显示。您可以对要删除的任何其他键执行相同的操作。如果你想把它们全部删除,我猜你可以把
\u keyHandlers
设置为一个新数组

我不知道为什么覆盖setupDefaultShortcuts不起作用。你在正确的课堂上重写了它吗?它是dijit.\u editor.RichText中的一种方法,而不是dijit.editor


希望这有帮助。

你在问题中所说的对我有用。。。甚至不需要扩展,只需通过传入一个新的空函数来完成该函数

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

是的,我不知道为什么他的想法对他也不起作用
dijit.Editor
扩展自
dijit.\u Editor.RichText
,所以很多都不是问题。嗨,肯。我正在尝试对dijit.Editor类进行子类化,而这正是setupDefaultShortcuts不起作用的地方。有没有一种方法可以覆盖新子类中的方法?这正是我想要的。谢谢你,肯!