ueditor编辑器bug

【点击选择图片】时无法立即弹出选择框,而是等4-7秒钟才显示出来的BUG

修改路径:/ueditor/dialogs/image/image.js 修改位置:367行开始(或通过 "accept" 或者"image/" 找到下图的位置),将
accept: {
title: 'Images',
extensions: acceptExtensions,
mimeTypes: 'image/
'
}

改为
accept: {
title: 'Images',
extensions: acceptExtensions,
mimeTypes: 'image/gif,image/jpeg,image/png,image/jpg,image/bmp'
}
单图上传也会有这个问题,同样只需要修改 ueditor.all.js (大概24431行)或者搜索 accept="image/ 在这个方法里面将 image/* 替换成 image/gif,image/jpeg,image/png,image/jpg,image/bmp 即可

ueditor源代码重新编译前修改部分

* 1、解决png、bmp等图片不压缩问题

\dist\utf8-php\third-party\webuploader\webuploader.min.js 文件搜索~"image/jpeg,image/jpg"改为"image/jpeg,image/jpg,image/png,image/bmp"。

2、解决点击上传图片延时问题

\dialogs\image\image.js(369行)修改为 mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif,image/bmp'

3、解决图片过小不压缩问题

2文件中compress属性添加 compressSize:1值

4、屏蔽拖放上传与粘贴板上传

_src\plugins\autoupload.js 方法前加 return

5、单图上传压缩实现

调用编辑器需要引入jquery
_src\adapter\editorui.js文件尾原单图上传代码修改为如下
/* 单图上传插件 */
editorui["simpleupload"] = function (editor) {
var name = "simpleupload",
ui = new editorui.Button({
className: "edui-for-simpleupload",
title:
editor.options.labelMap[name] ||
editor.getLang("labelMap." + name) ||
"",
theme: editor.options.theme,
showText: false
});
editorui.buttons[name] = ui;
editor.addListener("ready", function () {
var b = ui.getDom("body"),
iconSpan = b.children[0];
var that = this;
var imgUploader = function () {
var actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/./g, ',').replace(/[1]/, ''),
imageMaxSize = editor.getOpt('imageMaxSize'),
imageCompressBorder = editor.getOpt('imageCompressBorder');
var uploader1 = WebUploader.create({
swf: '../../third-party/webuploader/Uploader.swf',
pick: {id:b,multiple:false},
server: actionUrl,
fileVal: editor.getOpt('imageFieldName'),
fileSingleSizeLimit: imageMaxSize, // 默认 2 M
accept: {
title: 'Images',
extensions: acceptExtensions,
mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif,image/bmp'
},
compress: editor.getOpt('imageCompressEnable') ? {
width: imageCompressBorder,
height: imageCompressBorder,
// 图片质量,只有type为image/jpeg的时候才有效。
quality: 92,
// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
allowMagnify: false,
// 是否允许裁剪。
crop: false,
// 是否保留头部meta信息。
preserveHeaders: true,
compressSize: 1
} : false,
auto: true
});
uploader1.on('uploadSuccess', function (file, ret) {
if (ret.state === "SUCCESS") {
that.execCommand('inserthtml', "");
}
})
}

  setTimeout(imgUploader, 500);
});
return ui;

};

\themes\default_css\editor.css
文件尾添加 .webuploader-container > div:last-child{opacity:0}

WebUpload上传文件默认调用系统相机,而不是手机相册问题

capture=camera,用编辑器打开
webupload.js l.attr("capture","camera") 删除。

编辑器将style标记转换为div,而将div等标签以p替代解决方法

该编辑器内部过滤机制是将style标记转换为div,而将div等标签以p替代。如何解决呢?
之前有在网上查过相关的资料,都说是在配置文件里有一个黑白名单,然后就在配置文件里找了下,在最新版本的脚本文件里怎么找也没找到那个所谓的黑白名单,
当然了,没有黑白名单也照样可以解决问题的。
首先在ueditor.all.js文件内搜索allowDivTransToP,找到如下的代码,将true设置为false
me.setOpt('allowDivTransToP',false);
//默认的过滤处理
//进入编辑器的内容处理
然后再接着下边的addInputRule方法中将switch代码段中的case style,script都给注释或者删掉。
me.addInputRule(function (root) {
var allowDivTransToP = this.options.allowDivTransToP;
var val;
//进行默认的处理
root.traversal(function (node) {
if (node.type == 'element') {
if (!dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {
if (!node.firstChild()) node.parentNode.removeChild(node);
else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {
node.parentNode.removeChild(node, true)
}
return;
}

//删除switch下的case style 和script
switch (node.tagName) {
case 'a':
if (val = node.getAttr('href')) {
node.setAttr('_href', val)
}
break;
完成以上操作之后,保存即可。再次插入html时,样式就可以显示了。
解释一下以上操作的意义。
第一步将allowDivTransToP设置为false是因为默认的设置是将div自动转换为p,这样写好的样式就找不到相应的div
了,所以才渲染不上的。
第二步将addInputRule函数中的switch 代码段中的case style ,script选择给删除或者注释,是为了避免出现编辑器将style或script自动的转换成别的标签。

好了,大家可以试一试,看看效果。