如何告诉CKEditor插入
带有某个键盘快捷键的软连字符(),如Word中的Ctrl+ -(连字符)?我知道我可以打Alt+ 0173,但我的客户不喜欢这样.
我们将使用CKEditor的内置键绑定API将自定义命令映射到自定义键盘快捷键Ctrl+ Shift+ -(因为Ctrl+ -单独触发许多浏览器中的"缩小"快捷键).我们将这一切都包含在一个模块化插件中:
CKEDITOR.plugins.add('soft-hyphen-shortcut-key', {
init: function (editor) {
var shortcutKeys = CKEDITOR.CTRL + CKEDITOR.SHIFT + 189;
editor.addCommand('insertSoftHyphen', {
exec: function (editor, data) {
editor.insertHtml('');
}
});
editor.keystrokeHandler.keystrokes[shortcutKeys] = 'insertSoftHyphen';
}
});
当用户按下组合键时,此实现使用insertHtml()
编辑器方法将
HTML实体添加到光标位置处的文档.我们可以使用加载插件的新编辑器实例初始化:
CKEDITOR.replace('editor', {
extraPlugins: 'soft-hyphen-shortcut-key'
});
这是一个演示(我必须使这个外部代码片段不适用于CKEditor ).
在撰写本文时,此版本为alpha版,因此API和文档可能不完整.第5版极大地改变了项目的体系结构,包括为源代码切换到ES6,所以我不会演示如何为这个版本创建一个插件(我们需要构建它).相反,当我们初始化编辑器时,我们将创建与插件相同的功能:
ClassicEditor
.create(document.querySelector('#editor1'))
.then(function (editor) {
var shortcutKeys = [ 'Ctrl', 'Shift', 189 ];
var softHyphen = '\u00AD';
editor.keystrokes.set(shortcutKeys, function () {
editor.execute('input', { text: softHyphen });
});
});
版本5似乎还没有包含insertHtml()
与版本4 相同的版本,因此该示例使用Unicode字符作为软连字符.这是v5的演示.
对于有兴趣为版本5创建自定义插件和命令的用户,请参阅CKEditor 5 Framework的文档.这需要一个我们可以安装框架的npm包的环境.我们将使用ES6扩展框架的类和Webpack来捆绑它们.
解决赏金问题的快速说明:我们可以在TinyMCE(演示)中类似地绑定键组合:
tinymce.init({ selector: "#editor", init_instance_callback: function (editor) { editor.shortcuts.add("ctrl+shift+189", 'Insert Soft Hyphen', function () { editor.execCommand('mceInsertContent', false, '\u00AD'); }) } });