解决IE里获取UMEditor左右居中对齐丢失的问题。
zhangdaren opened this issue · comments
在使用umeditor里,发现在IE里与chrome添加对齐时,表现不一致:
chorme里,居中对齐是这样的<p style="text-align: center;"></p>
,
而IE11里, 居中对齐是给p标签添加了align属性:<p align="center"></p>
。
本来这样能显示正常也行,但测试发现,在IE里,使用um.getContent()时,align标签丢失,造成回显时内容对齐样式丢式。
考虑时间因素,暂未来得及分析官方源码,于是写了下面方法,从html里着手,绕过官方的getContent方法,并将align替换为样式,如下:
//解决IE中获取UMEditor左右居中对齐丢失的问题。
function getUMEditorContent(id)
{
var html = $("#" +id).html();
html = html.replace(/align=\"left\"/g, 'style="text-align: left;"').replace(/align=\"center\"/g, 'style="text-align: center;"').replace(/align=\"right\"/g, 'style="text-align: right;"');
return html;
}
目前遗留问题:
在不同的浏览器里使用的是不同的对齐代码,导致不同浏览器进行编辑同一份数据时,发生错误,对齐不起作用。
目前想到的办法就是:再次编辑时,判断浏览器,并将代码转换为对应的实现方式,这样可以保证没问题。
@zhangdaren
align属性是被故意过滤掉的:
//去掉多余的属性
.replace( /\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/ig, function(str,name,marks,val){
//保留list的标示
return name == 'class' && val == 'MsoListParagraph' ? str : ''
})
上面去除掉了align属性,我查了一下,align在所有浏览器里都是支持的,在 HTML 4.01 中,不赞成使用 p 元素的 align 属性。所以,如果你的html是5.0的话,直接使用align是没有问题的。在我的解决方案中,我将上面这段代码中的align删除掉了。
@gaoguoxin 感谢,后面还是换回了ueditor了。
我遇到的问题是chrome和IE在对齐所使用的属性不一致,导致使用chorme登录帐号编辑后的数据,再在在IE里登录并编辑时,会发生两者对齐属性同在的问题,就是因为可以通用而两者都会生效。
导致会出现同时存在相对的属性,即chrome左对齐属性(text-center:left)和IE上右对齐属性 align="right"一起出现在一个标签上,效果与实际编辑不一致的情况。