`
lucky_god
  • 浏览: 36217 次
社区版块
存档分类
最新评论

ueditor百度编辑器图片统计异常解决

    博客分类:
  • html
 
阅读更多

ueditor编辑器在统计输入的字数时,输入图片时右下角显示的已输入字符数统计小了,经反复测试,发现问题如下:

  

选择图片后,编辑器会先生成一个<img>图片(使用了其内部图片)先做显示,测试路径如下:

<p><img title="正在上传..." class="loadingclass" id="loading_i3tjakb1" src="./ueditor1_4_3-utf8-jsp/themes/default/images/spacer.gif"/></p>

 

表单提交后,将返回的url再设置到刚才生成的<img>src中,使其从新显示,测试路径如下:

<p><img title="1418871056363016525.jpg" alt="C:Userslucky godDesktop\u7701委农工委办公自动化系统liuyi.jpg" src="/ueditor1_4_3-utf8-jsp/jsp/upload/image/20141218/1418871056363016525.jpg"/></p>

 

但问题来了:生成内部<img>时,触发了change事件,并统计已输入字符数,而修改了src值是不会触发change事件从新统计的,所以显示与得到的字符长度其实不同。

 

解决方法如下:打开/ueditor1_4_3-utf8-jsp/ueditor.all.js(当然引用哪个js就修改哪个),找到方法 initUploadBtn()中的回调方法callback(),修改如下

 

                     if(json.state == 'SUCCESS' && json.url) {
                            loader = me.document.getElementById(loadingId);
                            loader.setAttribute('src', link);
                            loader.setAttribute('_src', link);
                            loader.setAttribute('title', json.title || '');
                            loader.setAttribute('alt', json.original || '');
                            loader.removeAttribute('id');
                            domUtils.removeClasses(loader, 'loadingclass');

                            //2014-12-18  将编辑器的值重新设置一遍,触发change事件
                            me.setContent(me.getContent());
                        }

 同时,如果拖动图片到编辑器也要进行处理:

找到sendAndInsertFile(file, editor)方法,修改其部分代码:

		if (loader) {
                    loader.setAttribute('src', link);
                    loader.setAttribute('_src', link);
                    loader.setAttribute('title', data.title || '');
                    loader.setAttribute('alt', data.original || '');
                    loader.removeAttribute('id');
                    domUtils.removeClasses(loader, 'loadingclass');
                    //2014-12-18  将编辑器的值重新设置一遍,触发change事件
                    me.setContent(me.getContent());
                }

 

在这之前需要修改统计方法:(原文地址http://blog.csdn.net/woshishui6501/article/details/9216411)

 

getContentLength: function (ingoneHtml, tagNames) {
            var count = this.getContent(false,false,true).length;
//注释掉的内容为 去除html标记后的内容数,实际入库是算上html标签和文字的 所以统计字数以getContents为准
            /*if (ingoneHtml) {
                tagNames = (tagNames || []).concat([ 'hr', 'img', 'iframe']);
                count = this.getContentTxt().replace(/[\t\r\n]+/g, '').length;
                for (var i = 0, ci; ci = tagNames[i++];) {
                    count += this.document.getElementsByTagName(ci).length;
                }
            }*/
            return count;
        }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics