如何修复CKEDITOR.cleanWord不是函数

时间:2019-08-24 09:42:59

标签: jquery ckeditor

我在应用程序中使用ckeditor 4.12.1。我需要从MS Word复制和粘贴内容。我添加了“ pastefromword”插件,并在config.js中添加了配置设置。但是仍然无法正常工作。 “ CKEDITOR.cleanWord不是函数”。

我的配置文件

CKEDITOR.editorConfig = function( config ) {

config.toolbarGroups = [
    { name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },
    { name: 'editing',     groups: [ 'find', 'selection', 'spellchecker' ] },
    { name: 'links' },
    { name: 'insert' },
    { name: 'forms' },
    { name: 'tools' },
    { name: 'document',    groups: [ 'mode', 'document', 'doctools' ] },
    { name: 'others' },
    '/',
    { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
    { name: 'paragraph',   groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
    { name: 'styles' },
    { name: 'colors' },
    { name: 'about' }
];

config.removeButtons = 'Underline,Subscript,Superscript';


config.format_tags = 'p;h1;h2;h3;pre';


config.removeDialogTabs = 'image:advanced;link:advanced';

config.extraPlugins = 'pastefromword';
config.extraPlugins = 'clipboard';
config.extraPlugins = 'notification';
config.extraPlugins = 'toolbar';
config.extraPlugins = 'button';

config.pasteFromWordCleanupFile = 'plugins/pastefromword/filter/default.js';
config.pasteFromWordNumberedHeadingToList = true;
config.pasteFromWordPromptCleanup = true;
config.pasteFromWordRemoveStyles = false;};

3 个答案:

答案 0 :(得分:0)

我有同样的问题。这是由于服务器上缺少/plugins/pastetools/filter/common.js文件引起的。根本原因是此文件是CKEditor版本升级后的新文件,未包含在项目中。因此,在部署到暂存和生产环境中时缺少该功能。对于开发人员来说,它运行良好,因为该文件在源代码管理中不丢失。

答案 1 :(得分:0)

如Tore所述,#include <json/value.h> int main() { Json::Value val; val[0] = "foo"; // This throws Json::LogicError } 和其他诸如高级内容过滤器之类的东西被实施来帮助处理内容。 (pastefromword docs

还有一点要注意,设置pastetools适用于4.6之前的CKE版本。

答案 2 :(得分:0)

我发现ckeditor.js中存在问题。 对我有用的是删除第16136行中函数的内容:

 function l(a, f, e) {
        var h = CKEDITOR.cleanWord;
        h ? e() : (a = CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile || f + "filter/default.js"), CKEDITOR.scriptLoader.load(a, e, null, !0));
        return !h
    }

现在只需清除函数中的内容,然后像这样保留它:

function l(a, f, e) {}

请注意,您添加的过滤器无法正常工作。