UEditor改造记录
公司中台使用UEditor替换了年久失修的eWebEditor,虽然UEditor也早已停止维护,但现在可选择的富文本编辑并不多,实际使用对代码还是有很多调整,记录备忘。
1、屏蔽编辑器自动将div标签替换为p标签
ueditor.config.js
,allowDivTransToP:false //允许进入编辑器的div标签自动变成p标签
2、白名单增加视频设置
ueditor.config.js
source: ['src', 'type'],
embed: ['type', 'class', 'pluginspage', 'src', 'width', 'height', 'align', 'style', 'wmode', 'play','_src','_url','loop', 'menu', 'allowscriptaccess', 'allowfullscreen']
3、清理多余的字体设置
ueditor.all.min.js修改
setContent: function (html, isAppendTo, notFireSelectionchange) {
var me = this;
替换为
setContent: function (html, isAppendTo, notFireSelectionchange) {
html = html.replace(/font-family:[^;']*(;)?/g,"");
var me = this;
4、避免dl dt dd标签替换,li标签不自动加class
case 'dl':
node.tagName = 'ul';
break;
case 'dt':
case 'dd':
node.tagName = 'li';
break;
case 'li':
var className = node.getAttr('class');
if (!className || !/list\-/.test(className)) {
node.setAttr()
}
var tmpNodes = node.getNodesByTagName('ol ul');
UE.utils.each(tmpNodes, function (n) {
node.parentNode.insertAfter(n, node);
});
break;
替换为
case 'dl':
//node.tagName = 'ul';
break;
case 'dt':
case 'dd':
//node.tagName = 'li';
break;
case 'li':
// var className = node.getAttr('class');
// if (!className || !/list\-/.test(className)) {
// node.setAttr()
// }
// var tmpNodes = node.getNodesByTagName('ol ul');
// UE.utils.each(tmpNodes, function (n) {
// node.parentNode.insertAfter(n, node);
// });
break;
5、li标签里面不嵌套p标签
注释掉以下代码
//进入编辑器的li要套p标签
me.addInputRule(function(root){
// utils.each(root.getNodesByTagName('li'),function(li){
// var tmpP = UE.uNode.createElement('p');
// for(var i= 0,ci;ci=li.children[i];){
// if(ci.type == 'text' || dtd.p[ci.tagName]){
// tmpP.appendChild(ci);
// }else{
// if(tmpP.firstChild()){
// li.insertBefore(tmpP,ci);
// tmpP = UE.uNode.createElement('p');
// i = i + 2;
// }else{
// i++;
// }
// }
// }
// if(tmpP.firstChild() && !tmpP.parentNode || !li.firstChild()){
// li.appendChild(tmpP);
// }
// //trace:3357
// //p不能为空
// if (!tmpP.firstChild()) {
// tmpP.innerHTML(browser.ie ? ' ' : '<br/>')
// }
// //去掉末尾的空白
// var p = li.firstChild();
// var lastChild = p.lastChild();
// if(lastChild && lastChild.type == 'text' && /^\s*$/.test(lastChild.data)){
// p.removeChild(lastChild)
// }
// });
收藏备用。