2009-08-07 24 views
2

jsonオブジェクトを使用して異なるビットのコンテンツを格納しています。そのうちの1つにjavascriptを含めることができます& html関連コンテンツセミコロン、タグなど)を使用することができます。私が使用していますこの問題を回避するには:JSP/Javascript/JQuery:変数にhtml/javascriptコンテンツを保存する+テキストエリアに書き込む

"コンテンツ": "<%は= StringEscapeUtils.escapeHtml(StringEscapeUtils.escapeJavaScript(コンテンツ))%>"

(私は、サーバー側の技術としてJSPを使用していますページがロードされているときにインラインで生成されたJSONのビットです)

これは、ページを壊す可能性のある文字をエスケープするのにうまくいきますが、この変数の内容をテキストエリアに取得する必要があります。

$( 'textarea')。val(obj.content);

私は何を避けるためにしようとしているが、この時点で起こるダブルエンコーディングです:

  • オリジナルコンテンツがある:<script>alert("hello world");</script>
  • コンテンツ変数が成り立つ:&lt;script&gt;alert(&quot;hello world&quot;);&lt;/script&gt;
  • 内のテキストをTEXTAREAは読む:&lt;script&gt;alert(&quot;hello world&quot;);&lt;/script&gt;それは<script>alert("hello world");</script>

この作品を作る任意の方法を読む必要があるとき?

答えて

0

ただエスケープで入力してください。私は$( 'textarea')を意味します。val(unescape(obj.content));

+0

unescape()はコンテンツに影響しません。 – Dan

+0

はい、あなたはrigth :(申し訳ありませんが、手動でhtmpエンティティをデコードする必要があります。 –

0

代わりにStringEscapeUtils.escapeJavaScriptを使用できますか? JSONが<script>ブロックにある場合、ページの破損を防ぐのに十分である必要があり、デコードは必要ありません。

+0

これは元のとおりですが、コンテンツにエンコードされていない ""要素が存在するため、JSONを含む