百度UEditor1.4.3.2使用问题小结

这几天工作中有个需求需要用到百度的ueditor(版本:ueditor1_4_3_2-utf8-jsp.zip),很常见的一个场景,但在使用过程中发现了一些问题(或者称之为坑也可以),整理一下,大概有这几个方面:


1、  enableAutoSave参数设置后无效

enableAutoSave参数的作用是是否启用自动保存,默认为true,当编辑文本时会自动保存到本地并提示,感觉比较烦也没必要,所以设置为false,但发现并没有生效,查看源码后发现,代码里根本就没有使用这个参数(据说官方会在下一个版本修复),由于该参数的效果类似于一个开关,所以在源码里面加上也很简单,打开editor.all.js,找到UE.registerUI('autosave}', function(editor) {});函数,加上对参数enableAutoSave的判断,如下:


UE.registerUI('autosave', function(editor) {
        //加入对参数的判断
	if(editor.options.enableAutoSave){
	    var timer = null,uid = null;
	    editor.on('afterautosave',function(){
	        clearTimeout(timer);
	
	        timer = setTimeout(function(){
	            if(uid){
	                editor.trigger('hidemessage',uid);
	            }
	            uid = editor.trigger('showmessage',{
	                content : editor.getLang('autosave.success'),
	                timeout : 2000
	            });
	
	        },2000)
	    })
	}
});

2、  单图片上传大小限制无效

做图片上上传功能时,一般需要限制图片的大小,ueditor的单图片上传功能,有个imageMaxSize参数,顾名思义应该是用来限制图片最大大小的,但是设置后并没有生效,查看源代码,发现没有做处理(表示不理解,开放了参数但不使用),如果需要做限制需要修改源码加上判断,逻辑很简单,拿到上传图片的大小和设置的参数做比较,获取到参数值是比较简单的,可以使用me.getOpt('imageMaxSize')拿到,但是获取选择图片的大小比较麻烦,需要ueditor本身的支持,通过浏览器调试JS可以发现,input对象里面会存储图片的信息,如下图:



我们可以拿到当前上传图片的大小然后比较即可,所以在判断文件格式是否错误的代码块之后加上对图片大小的判断,如下:


                //判断文件大小是否超过限制
                var files = input.files;
                if(files.length > 0){
                	var filesize = files[0].size;
                	var imageMaxSize = me.getOpt('imageMaxSize');
                	if(filesize > imageMaxSize){
                		showErrorLoader(me.getLang('simpleupload.exceedSizeError'));
                		return;
                	}
                }


结束语:除开以上罗列的两点,使用过程中大大小小还有若干,解决方案也多种多样,只要耐心调试,方案总会是有的,欢迎大家留言你遇到的有代表性的问题,避免更多的同学掉进去。



上一篇:java汉字转拼音开源库piny4j、jpinyin、unidecode小结
下一篇:用户推荐引擎简介