1

我有一个包含 html / CSS 的字符串(该字符串是使用富文本编辑器创建的)。数据被多个应用程序使用,一些应用程序按原样使用格式,一些应用程序尝试将新格式应用于数据。我们对 html 没有任何问题,因为它很容易删除这些数据。

我不确定从字符串中删除特定 CSS 的最佳方法是什么。仅供参考……某些字符串可能不包含 CSS……我正在考虑使用正则表达式……但不太确定这是否是万无一失的方法……

我知道我们可以使用以下方式删除

document.getElementById("whatever").className = "";
$('whatever').remmoveClass();

但这会删除所有 CSS 样式。

例如:我需要从下面的文本中删除下面的内联 CSS

<style type="text/css"> p { text-indent: 0pt;padding: 0px 0px 0px 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 12px;margin-left: 0px;text-align: left;font-family: 'Verdana';font-style: Normal;font-weight: normal;font-size: 16px;color: #000000; } .defaultDocumentStyle { telerik-style-type: default;telerik-style-name: defaultDocumentStyle;font-family: 'Verdana';font-style: Normal;font-weight: bold;font-size: 10.6700000762939px;margin-bottom: 12px; } </style><p><span>ddfggfg</span></p>

我只需要 ddfggfg

编辑:字符串可能不一定是 html 字符串,因为他们也可以使用简单的文本编辑器,因此我不能假设字符串将包含 HTML。

我主要在将数据导出为 CSV / PDF 时遇到此问题。内联 CSS 类与数据一起导出。

谢谢,
巴拉尼

4

2 回答 2

4

您需要解析 HTML 并删除style=""和可能的class=""属性。

使用 jQuery:

var dom = $('<div>' + source + '</div>');
dom.find('*').removeAttr('style');
var cleaned = dom.html();

您可能还想.find('style').remove()他们在一起。

于 2013-01-21T18:34:01.980 回答
0

如何设置特定样式以覆盖编辑器可能设置的任何内容?如果您有放置内容的特定类或 ID,则可以在 CSS 中执行以下操作:

#whatever p{
    margin-bottom: 0px !important;
}

这只是一个简短的示例,但是如果您希望它具有特定的外观,则可以设置一些覆盖以确保样式一致。缺点是您必须覆盖与您期望的外观相冲突的每个 CSS 属性。

于 2013-01-21T18:50:14.070 回答