1

html / CSSを含む文字列があります(文字列はリッチテキストエディタを使用して作成されます)。データは複数のアプリケーションで使用されます。一部のアプリケーションはそのままの形式を使用し、一部のアプリケーションはデータに新しい形式を適用しようとします。これらのデータは簡単に削除できるため、HTMLに問題はありません。

文字列から特定のCSSを削除する最善の方法がわかりません。FYI...一部の文字列には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

style=""HTMLを解析し、おそらく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 に答える