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.$); 
+2

被警告说,如果你有使用Shift + Insert键粘贴IE用户,你的粘贴处理程序将不会被执行。 – vegemite4me 2013-10-14 09:06:50

这个例子编辑通过删除所有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(真/假),您将无法粘贴到正确的位置(用异步数据处理的情况下)的文本。

+0

属性'evt.data.html'已经成为CKEditor v4 +中的'evt.data.dataValue',如另一个答案http://*.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'); 
}); 
+0

属性'evt.data.html'已成为CKEditor v4 +中的'evt.data.dataValue',如在另一个答案http://*.com/a/21677580/823020 – nimasmi 2014-02-17 11:11:10

+0

编辑答案,谢谢! – 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); 
});