我想为cKEditor的功能“forcePasteAsPlainText”切换一下,你可以在config.js中启用它:
CKEDITOR.editorConfig = function( config ) {
config.forcePasteAsPlainText = true;
}
从我网站的js文件中,我现在尝试使用jquery更改forcePasteAsPlainText的值:
if(typeof(CKEDITOR) !== 'undefined') {
$('#filterTextButton').click(function () {
CKEDITOR.config.forcePasteAsPlainText = !CKEDITOR.config.forcePasteAsPlainText;
if(CKEDITOR.config.forcePasteAsPlainText) {
$("#filterSwitch").html("OFF");
}
else {
$("#filterSwitch").html("ON");
}
});
}
问题是我无法访问 CKEDITOR.config.forcePasteAsPlainText 。我得到一个未定义的。
将对象 CKEDITOR.config 转换为字符串,我看到有一个名为 CKEDITOR.config.plugins 的对象,其中包含一个名为“pastetext”的参数(属于forcePasteAsPlainText)。但我不知道如何阅读或重新设置它。
我读到更改配置值的一种可能性是通过replacing it at runtime重新初始化整个编辑器......但是必须有另一种解决方案!?
PS:我read here您可以使用以下内容,但这对我不起作用:
CKEDITOR.on('instanceReady', function(ev) {
ev.editor._.commands.paste = ev.editor._.commands.pastetext;
});
答案 0 :(得分:1)
不幸的是,如果不重新初始化编辑器,就无法修改forcePasteAsPlaintext
。您可以在此处http://dev.ckeditor.com/browser/CKEditor/trunk/_source/plugins/pastetext/plugin.js#L56查看此配置设置仅在启动时使用一次。
替代解决方案是手动关闭/打开强制粘贴作为纯文本。例如。像这样:
// Set to false to switch forcing off.
var force = true;
editor.on( 'beforeCommandExec', function ( evt )
{
var mode = evt.data.commandData;
if ( force && evt.data.name == 'paste' && mode != 'html' )
{
editor.execCommand( 'pastetext' );
evt.cancel();
}
}, null, null, 0 );
editor.on( 'beforePaste', function( evt )
{
if ( force )
evt.data.mode = 'text';
});