2017-12-30 52 views
1

dangerouslySetInnerHTMLを使用してSVGを表示します。エスケープされたHTML文字列をエスケープ解除するes6メソッドはありますか?

<div dangerouslySetInnerHTML={{__html:props.SVG_Thumbnail__c}} />

しかし、私が得たSVGデータはエスケープHTML文字列です。

私はこれがFrontendの一般的なケースですが、しかし、私はGoogleの検索を行ったが、組み込みのメソッドのどれも、すべてのエスケープされた文字を完全に扱うことができませんでした。

エスケープメソッドが機能しません。

この文字列を処理する一般的な方法は何ですか?

毎回置換メソッドを記述しますか?あなたが行うことができます

 var escaped = str.replace(/&/g, '&amp;') 
       .replace(/</g, '&lt;') 
       .replace(/>/g, '&gt;'); 




    &lt;svg width=&quot;100%&quot; height=&quot;100%&q%&quot; fill=&quot;#ffffff&quot;/&gt;&lt;text x=&quot;5%&quot; y=&quot;50%&quot; font-family=&quot;Lato&quot; font-size=&quot;8px&quot; alignment-baseline=&quot;middle&quot; fill=&quot;#37444e&quot;&gt;Primary Content&lt;/text&gt;&lt;/svg&gt;&lt;svg x=&quot;10%&quot; y=&quot;64%&quot; width=&quot;90%&quot; height=&quot;26%&quot;&gt;&lt;rect x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;#ffffff&quot;/&gt;&lt;text x=&quot;5%&quot; y=&quot;50%&quot; font-family=&quot;Lato&quot; font-size=&quot;8px&quot; alignment-baseline=&quot;middle&quot; fill=&quot;#37444e&quot;&gt;Secondary Content&lt;/text&gt;&lt;/svg&gt;&lt;/svg&gt; 

答えて

2

ことの一つは、HTML要素のinnerHTMLプロパティにエスケープ値を割り当て、再びエスケープ形式でそれを得るためにtextContentプロパティを使用しています。

function unescapeHtml(value) { 
 
    var div = document.createElement('div'); 
 
    div.innerHTML = value; 
 
    return div.textContent; 
 
} 
 

 
var escapedValue = '&lt;svg width=&quot;100%&quot; height=&quot;100%&q%&quot; fill=&quot;#ffffff&quot;/&gt;&lt;text x=&quot;5%&quot; y=&quot;50%&quot; font-family=&quot;Lato&quot; font-size=&quot;8px&quot; alignment-baseline=&quot;middle&quot; fill=&quot;#37444e&quot;&gt;Primary Content&lt;/text&gt;&lt;/svg&gt;&lt;svg x=&quot;10%&quot; y=&quot;64%&quot; width=&quot;90%&quot; height=&quot;26%&quot;&gt;&lt;rect x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot; fill=&quot;#ffffff&quot;/&gt;&lt;text x=&quot;5%&quot; y=&quot;50%&quot; font-family=&quot;Lato&quot; font-size=&quot;8px&quot; alignment-baseline=&quot;middle&quot; fill=&quot;#37444e&quot;&gt;Secondary Content&lt;/text&gt;&lt;/svg&gt;&lt;/svg&gt;'; 
 

 
var unescapedValue = unescapeHtml(escapedValue); 
 

 
console.log(unescapedValue);

+0

クール。私はちょうどこの普通のケースがそれを扱うためのすぐれた方法を持っていないと思っています^^。ありがとう – newBike

+0

@newBike私が知っていることはありません。 – JLRishe

関連する問題