3

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

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

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

4

2 回答 2

6

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

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

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

如果您仍想在 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 的下一个主要版本中修复。

于 2012-06-20T13:11:41.773 回答
0

这甚至可以从 MS Word 粘贴为纯文本

var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
    evt.editor.setData($('<div/>').html(evt.data.dataValue).text());
}, editor.element.$);
于 2018-03-28T10:27:23.437 回答