fex-team / umeditor

ueditor的mini版本,特点是体积小巧和更快的加载速度

Home Page:http://ueditor.baidu.com/website/umeditor.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

解决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"一起出现在一个标签上,效果与实际编辑不一致的情况。