ckeditor - onpaste活动

Mur*_*ala 14 paste ckeditor

有谁知道如何onpaste在CKEditor 3.x中附加事件?

我基本上想要获取CTRL+ V数据并添加一些文本,然后将其添加到编辑器中.

我环顾四周但没有找到明确的答案.CKEditor论坛没什么帮助.

nja*_*boy 18

这应该可以解决问题

var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
    // Update the text
    evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您有使用Shift + Insert粘贴的IE用户,则不会执行粘贴处理程序. (2认同)

小智 13

你的两个例子都有点合成.

首先,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');
});
Run Code Online (Sandbox Code Playgroud)

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


小智 12

此示例通过删除所有img元素来编辑要粘贴的内容.

CKEDITOR.on('instanceReady', function (ev) {
    ev.editor.on('paste', function (ev) {
        ev.data.html = ev.data.html.replace(/<img( [^>]*)?>/gi, '');
    });
});
Run Code Online (Sandbox Code Playgroud)