如何正确合并2个HTML文档及其样式?

时间:2015-02-18 23:08:36

标签: html

我是电子邮件客户端的作者,我正在做的一件事就是添加对HTML编辑的支持。编辑器本身是基于我从头开始编写的HTML呈现控件,但它支持大多数HTML和CSS。我遇到的问题是使用用户的回复模板格式化对HTML电子邮件的回复,该模板也是HTML(具有不同的样式表)。如此干净地将两个HTML文档与他们自己的样式合并,而不会被其他文档的样式弄乱。

当用户回复HTML电子邮件时,我会解析标记的内容并将其放入回复中。该div的样式在左边距下方显示一条线,通知用户它引用了原始电子邮件。 Gmail做同样的事情。无论如何,HTML块中的样式单独保存,然后插入到新文档的头部。

当然,如果原始电子邮件定义了一个链接样式,那么该样式会影响原始引用区域之外的所有链接。因此,我在底部的签名和作为回复模板一部分的From / To标题呈现都可以从源HTML中获得样式。

我想知道是否有简单的直接解决方案将所有原始样式包含在文档的引用部分中?像命名空间?或限量范围造型?

1 个答案:

答案 0 :(得分:0)

我遇到的解决方案是将多个文档中的所有传入样式添加到全局样式表中。通过首先检查属性的计数是否相同来匹配样式,然后枚举每个属性并比较它的值。这基本上为软件提供了最少数量的样式来正确呈现内容。在病态情况下可能会非常缓慢但到目前为止它在实践中运作良好。

顺便说一句,最近我注意到很多电子邮件客户端都没有回复所有样式。说实话,这似乎是问题的廉价和讨厌的解决方案。即使它确实给出了一致的外观。