从CKEditor的扫描代码中获取密钥

时间:2012-12-12 09:07:54

标签: javascript html ckeditor

我可以使用以下代码

捕获ckeditor的密钥
    CKEDITOR.instances.<ID of Control>.on('key', function (e) {
                e.data.keyCode ;//Gives scan code for keys ".,/;'\" ``
}

e.data.keyCode或者如果我使用evt.data.getKey()处理“KeyUP”和“KeyDown”事件,我可以获得密钥的扫描代码而不是charcode

需要检测char而不是密钥的扫描代码,请建议我获取char的任何机制。 CKEDITOR.instances.<ID of Control>.on('key',...)函数处理程序的工作与普通的按键事件处理程序机制不同。

1 个答案:

答案 0 :(得分:0)

我不确定char代码是什么(对于我试过的0),但是这里的代码可以帮助你:

CKEDITOR.replace( 'editor1', {
    on: {
        contentDom: function( evt ) {
            var editable = evt.editor.editable();
            editable.attachListener( editable, 'keyup', function( evt ) {
                console.log( 'getKey', evt.data.getKey() );
                console.log( 'getKeystroke', evt.data.getKeystroke() );
                console.log( 'native event', evt.data.$ );
            } );
        }
    }
} );

我假设您正在使用CKEditor 4,并且该代码可能无法在CKEditor 3上运行。

我将keyup事件监听器附加到可编辑状态。可编辑是主要的可编辑元素 - 在内联编辑器中,它是构建编辑器的容器,在框架编辑器上,这是内部iframe的body

非常重要的是在contentDom事件上添加此侦听器 - 每次加载内容DOM时都会触发它,并且每次setData调用后都会触发框架编辑器(很常见)。在框架编辑器中setData创建了全新的DOM,因此删除附加到旧DOM的旧侦听器非常重要。这由editable本身处理,但是必须通过attachListener方法附加侦听器。

回到问题 - 我认为CKEditor没有提供获取char代码的方法。您需要使用evt.data.$下的原生事件。