ckeditor - onpaste事件
有没有人知道如何在CKEditor 3.x中附加onpaste
事件?ckeditor - onpaste事件
我基本上要抢CTRL +V数据和一些文本添加到它,然后将其添加到编辑器。
我环顾四周,但还没有找到明确的答案。 CKEditor论坛没有太大的帮助。
这应该做的伎俩
var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
// Update the text
evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);
这个例子编辑通过删除所有IMG元素粘贴的内容。
CKEDITOR.on('instanceReady', function (ev) {
ev.editor.on('paste', function (ev) {
ev.data.html = ev.data.html.replace(/<img([^>]*)?>/gi, '');
});
});
您的两个示例都有点合成。
首先,editor.getData()获取编辑器的所有内容,因此如果您只想处理粘贴的数据,您需要获取ev.data.html并粘贴到正确的位置。
editor = CKEDITOR.instances.editor1;
editor.on('paste', function (evt) {
var editor = evt.editor;
evt.stop(); // we don't let editor to paste data, only for current event
// show loader that blocks editor changes
$.post('clean.php', {html: evt.data.html}, function (data) {
editor.insertHtml(data.html); // text will be inserted at correct place
// hide loader
}, 'json');
});
不要使用功能editor.setReadonly(真/假),您将无法粘贴到正确的位置(用异步数据处理的情况下)的文本。
属性'evt.data.html'已经成为CKEditor v4 +中的'evt.data.dataValue',如另一个答案http://stackoverflow.com/a/21677580/823020 – nimasmi 2014-02-17 11:12:15
我知道这是一个老问题,但认为我会添加我的版本的aliaksej的答案,因为它允许使用自定义的“清洁” - 它不适合我,直到我改变它如下。
editor = CKEDITOR.instances[id];
editor.on('paste', function (evt) {
evt.stop();
$.post('/actions/clean.php', {html: evt.data.dataValue}).done(function (data) {
evt.editor.insertHtml(data);
}, 'json');
});
属性'evt.data.html'已成为CKEditor v4 +中的'evt.data.dataValue',如在另一个答案http://stackoverflow.com/a/21677580/823020 – nimasmi 2014-02-17 11:11:10
编辑答案,谢谢! – 2015-10-19 09:54:03
editor = CKEDITOR.instances[id];
editor.on('paste', function (evt) {
evt.stop();
var data = evt.data.dataValue;
if (window.chrome || window.safari) {
// removing span wrapper on webkit browsers.
data = $(data).html();
}
evt.editor.insertHtml(data);
});
被警告说,如果你有使用Shift + Insert键粘贴IE用户,你的粘贴处理程序将不会被执行。 – vegemite4me 2013-10-14 09:06:50