ckeditor-onpaste事件

ckeditor-onpaste事件,ckeditor,paste,Ckeditor,Paste,有人知道我如何在CKEditor 3.x中附加onpaste事件吗 我基本上想要抓取CTRL+V数据并向其中添加一些文本,然后将其添加到编辑器中 我环顾四周,但没有找到确切的答案。CKEditor论坛没有多大帮助。这应该可以解决问题 var editor = CKEDITOR.instances.YourInputControlName; editor.on('paste', function(evt) { // Update the text evt.editor.setDat

有人知道我如何在CKEditor 3.x中附加
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, '');
    });
});
CKEDITOR.on('instancerady',函数(ev){
ev.editor.on('paste',函数(ev){
ev.data.html=ev.data.html.replace(/]*)?>/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');
});

不要使用functions editor.setReadonly(true/false),您将无法将文本粘贴到正确的位置(在异步数据处理的情况下)。

我知道这是一个老问题,但我想我应该添加我版本的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');
});

请注意,如果您的IE用户使用Shift+Insert进行粘贴,将不会执行粘贴处理程序。在CKEditor v4+中,属性
evt.data.html
已成为
evt.data.dataValue
,正如在另一个回答中,在CKEditor v4+中,属性
evt.data.html
已成为
evt.data.dataValue
,如另一个答案所示
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);
});