CKEditor:捕获粘贴事件(包括Shift + Insert)

时间:2013-10-09 10:17:31

标签: javascript-events internet-explorer-9 ckeditor copy-paste

我们正在使用CKEditor,我们正在处理粘贴事件,如:

var editor = CKEDITOR.instances.OurInputControlName;
editor.on('paste', function(ev) {
    alert('we are in the on paste event!');
}

但是,我刚刚发现用户可以通过按 Shift + Insert 进行粘贴,我们的粘贴事件处理程序没有被执行。

如何添加捕获 Shift + 插入并粘贴的事件处理程序。

我们正在使用CKEditor 4.1.1。

修改 这可能是IE唯一的问题,IE9至少。我还没有尝试其他版本的IE。它在FF和Chrome中运行良好。

1 个答案:

答案 0 :(得分:2)

我通过检测IE中按下 Shift + Insert 并手动触发粘贴事件来解决此问题。

var editor = CKEDITOR.instances.OurInputControlName;
editor.on('key', function(ev) {
    if (ev.data.keyCode == 2228269 && $.browser.msie) {
        setTimeout(function() {
            var event = {
                'type': 'html',
                'dataValue': editor.getData()
            };
            editor.editable().setHtml('');
            editor.fire('paste', event);
        }, 100);
    }
});
editor.on('paste', function(ev) {
    alert('we are in the on paste event!');
}

我正在使用setHtml(),因为调用editor.setData('')一直在控制台中记录Javascript错误(即使它确实清除了textarea并且没有阻止页面正常工作)。