我在尝试逃避某些代码时遇到问题...基本上,我想逃避“<”和“>”但我希望他们在我的#output div中显示为“<”和“>”。目前,它们显示为“& lt;”和“& gt;”在页面上。
这显然是为了防止任何人在页面上利用/注入脚本。这是我的代码:
var textval = $("#textarea").val(); //textarea
filtered = textval.replace(/</gi,"<"); //replace "<"
$("#output").html(filtered); //insert textarea data into div
任何人都可以发现我做错了什么,或者有更好的办法吗?
非常感谢
编辑:我确实想要一些html标签(比如&lt; b&gt;工作,所以我不能使用$ .text();不幸的是......)
答案 0 :(得分:5)
试试这个:
var textval = $("#textarea").val();
$("#output").text(textval);
jQuery提供了两种方法 - $ .text()和$ .html(),其中方法名称不言自明:)
答案 1 :(得分:0)
稍微不同的替换,但对我有用(即使使用.html()
)。
<强> Demo 强>
var str = $('#textarea').val();
$('#result').html(str.replace(/<|>/ig,function(m){
return '&'+(m=='>'?'g':'l')+'t;';
}));
<textarea id="textarea">
Hello, <b>World</b>!
</textarea>
<div id="result"></div>
(这只是为了验证可以完成,.text()
是更好的方法)