1

既にエスケープされたテキストをページに配置し、そのテキストで jQuery を使用してテキストエリアのコンテンツを設定しています。しかし、また逃げられる。データベースからのユーザー入力テキストであるため、ページに表示されるテキストをエスケープしたくありません。

<script type="text/javascript">
jQuery('#load-template-link').click(function (event) {
    var content = jQuery('#template-' + jQuery('#template_selector option:selected').val());

    if (content.length > 0) {
        jQuery('#text-area').val(content.html());
    }

});
</script>

{% for template in templates %}
<script type="text/template" id="template-{{ template.id }}">{{ template.body }}</script>
{% endfor %}
4

2 に答える 2

0

html()の代わりにtext()を使用してみましたか?

content.text()
于 2013-02-07T15:55:58.307 に答える
0

escapeHTMLをエンティティに変換するという意味であれば、それ.htmlを行っているのは関数です。使用.text:

> $("<div>&></div>").html()
"&amp;&gt;"
> $("<div>&></div>").text()
"&>"
于 2013-02-07T15:53:37.933 に答える