如何从JavaScript模拟DEL键按CKEditor

时间:2015-10-18 18:55:17

标签: javascript keyboard ckeditor

短篇小说:

// get the editor instance
var editor = CKEDITOR.instances.editor1;

// this is what I want, but it does not exist
editor.execCommand('delete');

// I've played with this, found somewhere, but without success.
editor.fire('key', { keyCode : 46 } )

长篇故事:

在.NET WindowsForms的Webbrowser控件中使用CKEditor时出现问题。包括DELete键在内的几个键根本不会传播到控件。

我设法使用全局键盘钩子截取密钥并将窗口消息直接发送到嵌入式IE窗口句柄,但没有成功。

现在我的目标是在javascript中模拟删除键,因为我可以从我的.NET应用程序中调用js函数。 不知何故,这必须起作用,因为它可以在虚拟键盘插件中运行。 (见sample

可悲的是,我无法从插件代码中了解其工作原理。 如果有人能发布工作样本,我会很高兴。

谢谢!

2 个答案:

答案 0 :(得分:0)

我找到了javascript虚拟键盘中使用的库(Jsvk plugin) 它被称为DocumentSelection,可以找到here

<script src="./documentselection.js"></script>

function simulateDelete()
{
    var editor = CKEDITOR.instances.editor1;
    var container = (editor.container.getElementsByTag('textarea').getItem(0) ||
                     editor.container.getElementsByTag('iframe').getItem(0)
                    ).$;
    DocumentSelection.deleteAtCursor(container, true);
}

也许某人有一个更简单的解决方案,而无需外部libaray。

答案 1 :(得分:0)

我想你想要一些线索......

有......检查文档

Key Event in CKEditor

alert( event.getKey() );

获取关键元素,另一个是

alert( event.getKeystroke() == 65 );// "a" key
alert( event.getKeystroke() == CKEDITOR.CTRL + 65 );// CTRL + "a" key
alert( event.getKeystroke() == CKEDITOR.CTRL + CKEDITOR.SHIFT + 65 );//CTRL + SHIFT + "a" key