我可以使用以下代码
捕获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',...)
函数处理程序的工作与普通的按键事件处理程序机制不同。
答案 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.$
下的原生事件。