标签:
我上一个版本用的是ueditor1.3.6,自从1.4.2版以后,“前端上传模块统一改用webuploader”,ueditor在多图上传一直考虑漏掉了图片顺序的问题。
我的网站在用户上传图片文章的时候,使用多图上传,点确认后,编辑框内的图片顺序是乱的。
看webuploader的问题在于多线程上传,ueditor对“uploadSuccess”的处理是上传成功一张,就加入到数组中,这样如果图片上传完成顺序是乱的,最终加入文本框的顺序也乱了。
我这里修改了一下js,供大家参考,希望ueditor能改进这个问题:
vim dialogs/image/image.js
716 uploader.on(‘uploadSuccess‘, function (file, ret) {
717 var $file = $(‘#‘ + file.id);
718 try {
719 var responseText = (ret._raw || ret),
720 json = utils.str2json(responseText);
721 if (json.state == ‘SUCCESS‘) {
722 _this.imageList[$file.index()] = json; // 修改这里:按选择好的文件列表顺序存储
723 $file.append(‘‘);
724 } else {
725 $file.find(‘.error‘).text(json.state).show();
726 }
727 } catch (e) {
728 $file.find(‘.error‘).text(lang.errorServerUpload).show();
729 }
730 });
针对dialogs/image/image.js,如果按照上面的方式修改了ln:722行,接下来ln:769行左右的getInsertList函数也要同步修改一下。避免出现这类情况:arr = [];arr[0]=obj0;arr[2]=obj2;然后去尝试读取arr[1]的属性。
getInsertList: function () {
var i, data, list = [],
align = getAlign(),
prefix = editor.getOpt(‘imageUrlPrefix‘);
for (i = 0; i < this.imageList.length; i++) {
data = this.imageList[i];
if(data == undefined){//源自于对line:(722或721)的修改,避免部分图片上传失败,或者选择的图片不符合规范不能参与上传而造成imageList数组中出现的undefined项
continue;
}
list.push({
src: prefix + data.url,
_src: prefix + data.url,
title: data.title,
alt: data.original,
floatStyle: align
});
}
return list;
}
标签:
原文地址:http://my.oschina.net/u/554046/blog/505000