使用html实体对文本框执行jQuery val()

Dav*_*idB 1 html jquery encoding

我用一个简单的js小提琴来设置我的问题http://jsfiddle.net/um788f6q/

<input type="text" id="yo">
$("#yo").val('hell&#39;o')
Run Code Online (Sandbox Code Playgroud)

基本上我想知道是否有一种方法来显示撇号而不是编码的字符串.我已在服务器上编码这样的值以防止xss攻击,因此解码不是一个有效的选项.

谢谢

Que*_*tin 8

基本上我想知道是否有一种方法来显示撇号而不是编码的字符串.

什么都没有.

value属性处理文本,而不是HTML.

作为一个可怕的黑客,您可以通过解析HTML然后读取生成的文本节点将其转换为文本.

$("#yo").val($("<div />").html('hell&#39;o').text());
Run Code Online (Sandbox Code Playgroud)

......但不要.解决真正的问题.

我已在服务器上编码这样的值以防止xss攻击

不要那样做.

您将数据插入JavaScript,而不是HTML.

在不处理HTML时,不要对HTML使用防御.它可能会让你变得脆弱.

编码数据以插入JavaScript的适当方法是使用JSON编码器.(然后,如果要将JSON放在HTML属性值中,则使用实体对生成的JSON进行编码,/如果将其放入<script>元素中,则转义任何字符).