0

我可以使用以下代码捕获 ckeditor 的密钥

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

但是 e.data.keyCode,或者如果我使用处理“KeyUP”和“KeyDown”事件,evt.data.getKey()我能够获得键的扫描码而不是charcode.

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

4

1 回答 1

1

我不确定字符代码是什么(无论我尝试过什么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事件侦听器附加到可编辑的。Editable 是主要的可编辑元素 - 在内联编辑器中,它是构建编辑器的容器,而在框架编辑器中,它是body内部 iframe。

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

回到问题 - 我认为 CKEditor 没有提供获取字符代码的方法。您需要使用位于evt.data.$.

于 2012-12-13T08:48:11.343 回答