百度编辑器对H5代码修改

在百度编辑器中,出于安全考虑,会将源码的div标签替换为p标签,li标签上的样式删除,自动生成&nbsp等。

这里根据以上说的三点进行解决:

div标签替换为p标签:

在ueditor.all.js文件内搜索allowDivTransToP,找到如下的代码,将true设置为false

me.setOpt({
    'allowDivTransToP':false,
    'disabledTableInTable':true
});

li标签上的样式删除:

在ueditor.all.js文件内,找到以下代码,注释掉即可

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;

自动生成&nbsp:

在ueditor.all.js文件中找到下面的代码,将 替换为‘’即可

function isText(node, arr) {
    if(node.parentNode.tagName == 'pre'){
        // 源码模式下输入html标签,不能做转换处理,直接输出
        arr.push(node.data)
    }else{
        arr.push(notTransTagName[node.parentNode.tagName] ? 
            utils.html(node.data) : node.data.replace(/[ ]{2}/g,'&nbsp'))
    }
}

 

li标签内自动加p标签:在ueditor.all.js文件内,找到以下代码,注释掉即可

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 ? '&nbsp;' : '<br/>')
	}
	//去掉末尾的空白
	var p = li.firstChild();
	var lastChild = p.lastChild();
	if(lastChild && lastChild.type == 'text' && /^\s*$/.test(lastChild.data)){
		p.removeChild(lastChild)
	}
});

参考:http://blog.csdn.net/shahexiaoxiami/article/details/44103009

猜你喜欢

转载自z724130632.iteye.com/blog/2370963
今日推荐