昨天为一个客户的项目修改后台富编辑器在上传图片后去掉自动添加高宽度的功能。这个客户所用的后台系统是 PHPCMS ,这个系统所使用的富文本编辑器是知名的 CKEditor,这个编辑器在上传图片后会自动添加高宽度的 style 属性。如下:

那么如何去掉【style=”width: 580px; height: 295px;“】这个属性,于是呼在【度娘】搜索了多次没有找到相关的资料,于是呼就自己动手去找解决方法了,现将这个解决方法记录下来。

PHPCMS 所使用的 CKEditor 的配置文件 config.js 中没有找到有关这项的配置设置的方法说明及参数,这也许和它使用的版本有关,也或者是 PHPCMS 自家将这项的设置给去除,再怎么猜测也没用啊。于是呼想到直接通过修改 plugins 来解决这个问题。

按照这个线索继续查找,找到了处理图片的地方是

你的 PHPCMS 路径\statics\js\ckeditor\plugins\image\dialogs\image.js

这个打开后是压缩版的 JS,可以用格式化 JS 将其中的代码清楚的显示出来后就可以找设置 style 的几个点。一共找到 2 处有关它的设置分别是:

1、设置宽度的地方

if (B == d) {
    if (E) C.setStyle('width', CKEDITOR.tools.cssLength(E));
    else C.removeStyle('width'); ! D && C.removeAttribute('width');
} else if (B == f) {
    var F = E.match(h);
    if (!F) {
        var G = this.getDialog().originalElement;
        if (G.getCustomData('isReady') == 'true') C.setStyle('width', G.$.width + 'px');
    } else C.setStyle('width', CKEDITOR.tools.cssLength(E));
} else if (B == g) {
    C.removeAttribute('width');
    C.removeStyle('width');
}

2、设置高度的地方

if (B == d) {
    if (E) C.setStyle('height', CKEDITOR.tools.cssLength(E));
    else C.removeStyle('height'); ! D && C.removeAttribute('height');
} else if (B == f) {
    var F = E.match(h);
    if (!F) {
        var G = this.getDialog().originalElement;
        if (G.getCustomData('isReady') == 'true') C.setStyle('height', G.$.height + 'px');
    } else C.setStyle('height', CKEDITOR.tools.cssLength(E));
} else if (B == g) {
    C.removeAttribute('height');
    C.removeStyle('height');
}

将以上两个地方的代码注释也好删除也罢都可以,任你选。最后测试图片上传就能发现问题解决了。