我上一个版本用的是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 }); vim dialogs/attachment/attachment.js 500 uploader.on('uploadSuccess', function (file, ret) { 501 var $file = $('#' + file.id); 502 try { 503 var responseText = (ret._raw || ret), 504 json = utils.str2json(responseText); 505 if (json.state == 'SUCCESS') { 506 _this.fileList[$file.index()] = json; 507 $file.append(''); 508 } else { 509 $file.find('.error').text(json.state).show(); 510 } 511 } catch (e) { 512 $file.find('.error').text(lang.errorServerUpload).show(); 513 } 514 }); vim dialogs/video/video.js 729 uploader.on('uploadSuccess', function (file, ret) { 730 var $file = $('#' + file.id); 731 try { 732 var responseText = (ret._raw || ret), 733 json = utils.str2json(responseText); 734 if (json.state == 'SUCCESS') { 735 uploadVideoList[$file.index()] = { 736 'url': json.url, 737 'type': json.type, 738 'original':json.original 739 }; 740 $file.append(''); 741 } else { 742 $file.find('.error').text(json.state).show(); 743 } 744 } catch (e) { 745 $file.find('.error').text(lang.errorServerUpload).show(); 746 } 747 }); 如上,都使用了$file.index()做为数组下标,能够保证图片上传后顺序是按照用户选择图片之后,加入到预览窗口的顺序。