« 上一篇下一篇 »

百度umeditor编辑器超链接 变成http://undefined

百度轻便版的um editor在加载内容中含有a标签超链接时,会变成http://undefined 

经测试,实际上是内容中有超链接或插入超链接后,只要一切换到源代码界面,或者保存到数据库中,再次编辑的时候,超链接就会把超链接自动替换成http://undefined


比如:

blob.png


官网的演示示例也是有这个问题的, 哈哈  ,百度的技术多牛,再厉害的老虎也有打瞌睡的时候,其实仅仅错了一个字符而已,不过1万1千多行代码,目前就发现一个错误,也不是什么见不得人的事,情理之中嘛,我也是错程序的,谁不出点错。理解万岁。再说人家百度免费让用的,也不欠我们什么。哈哈


下面说解决方法:

这个功能在umeditor.js第6907行左右


  1. me.commands['source']


其中的 me.filterOutputRule(root);  // 这里让超链接变成 http://undefined ,通过跟踪,我们把问题代码锁定在


a.setAttr('href', _href);


其中的 _href出问题了,它获取方式var _href = a.getAttr('_href');这个_href的属性不存在,因此获得取undefined值。如图:

blob.png


因此,解决办法:

把var _href = a.getAttr('_href');改成var _href = a.getAttr('href'); 

同时加一个过滤保险:if(_href!='http://undefined') a.setAttr('href', _href);

如图


blob.png


对于umeditor.min.js,查找 ftp|https?|\/|file 可以快速定位到问题代码处,并改动如下:

blob.png