CKEDITOR - 默认情况下打开粘贴为纯文本窗口

时间:2012-06-19 21:57:25

标签: ckeditor

我正在寻找一种方法来确保如果用户使用ctrl + v粘贴文本,我总是会得到纯文本。

我尝试过添加config.forcePasteAsPlainText = true;到我的CKEDITOR.editorConfig功能,我仍然得到大量的nbsp;等等 我似乎能够获得真正纯文本的唯一方法是使用工具栏上的粘贴作为纯文本按钮。 如果用户使用ctrl + v粘贴并将其粘贴在那里,是否有办法打开该窗口。 我知道可以用fckeditor完成,但是无法弄清楚如何使它在ckeditor中工作。

任何帮助将不胜感激! 感谢

2 个答案:

答案 0 :(得分:5)

我检查了最新的SVN版本(应该与3.6.3有很大不同),当我设置forcePasteAsPlainText : true时(注意 - 你必须在初始化编辑器或editor.replace( el, config )之前这样做 - 稍后再做)不行。

我正在粘贴(通过ctrl + v)复制网站的一部分并正确粘贴文本。没有样式,没有多余和非纯文本元素。

但是, 实体在纯文本中完全正确 - 它们会替换多个空格,并且对于粘贴文本对话框粘贴的内容,您将获得相同的结果。

如果您仍想在ctrl + v上打开pastetext对话框,可以使用CKEDITOR.config.keystrokes。这个数组中有几个默认值,所以你不应该覆盖它们,但你可以添加自己的击键(在初始化编辑器之前):

CKEDITOR.config.keystrokes.push(
    [ CKEDITOR.CTRL + 86, 'pastetext' ]
);

如果你只想为一个编辑器添加这个击键(因为编辑全局配置会影响所有),那么你将不得不使用自定义配置文件(见http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Setting_Configurations#Using_the_config.js_File)并以这种方式添加你的击键:

CKEDITOR.editorConfig = function( config )
{
    config.keystrokes = [
        // copy here all keystrokes from _source/plugins/keystrokes/plugin.js
        [ CKEDITOR.CTRL + 86, 'pastetext' ]
    ];
};

这种方式OFC不方便,但这将在CKEditor的下一个主要版本中修复。

答案 1 :(得分:0)

即使从MS Word中也可以粘贴为纯文本

var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
    evt.editor.setData($('<div/>').html(evt.data.dataValue).text());
}, editor.element.$);