我使用简单的js小提琴http://jsfiddle.net/um788f6q/
设置了我的问题<input type="text" id="yo">
$("#yo").val('hell'o')
基本上我想知道是否有办法显示撇号而不是编码的字符串。我已在服务器上编码这样的值以防止xss攻击,因此解码不是一个有效的选项。
由于
答案 0 :(得分:7)
基本上我想知道是否有办法显示撇号而不是编码的字符串。
没什么理智的。
value属性以文本形式处理,而不是HTML。
作为一个可怕的黑客攻击,您可以通过解析HTML然后读取生成的文本节点将其转换为文本。
$("#yo").val($("<div />").html('hell'o').text());
......但不要。解决真正的问题。
不要这样做。我在服务器上编码了这样的值,以防止xss攻击
您将数据插入JavaScript,而不是HTML。
当您不处理HTML时,不要使用HTML防御。这可能会让你感到脆弱。
编码数据以插入JavaScript的适当方法是使用JSON编码器。 (如果要将JSON放在HTML属性值中,则使用实体对生成的JSON进行编码;如果要将/
个字符放在<script>
元素中,则转义为{{1}}个字符。
答案 1 :(得分:-2)
您可以替换$#39;通过'在JS中并将其替换回服务器端。
<input type="text" id="yo">
$("#yo").val('hell'o'.replace(''',"'"))
答案 2 :(得分:-2)
试试这个
var test = 'hell'o';
var decoded = $('<div/>').html(test).text();
$("#yo").val(decoded);
答案 3 :(得分:-2)
这应该可以帮到你
var tp = 'hell'o';
var new_tp = $('<textarea />').html(tp).text();
$('#yo').val(new_tp);