转义小于/大于 javascript

发布于 2024-10-21 00:32:55 字数 514 浏览 4 评论 0原文

我在尝试转义某些代码时遇到问题...基本上,我想转义“<”和“>”但我希望它们在我的#output div 中显示为“<”和“>”。目前,它们显示为“<”和“>”在页面上。

这显然是为了防止任何人在页面上利用/注入脚本。这是我的代码:

var textval = $("#textarea").val();                   //textarea

filtered = textval.replace(/</gi,"&lt;");           //replace "<"

$("#output").html(filtered);                     //insert textarea data into div

任何人都可以发现我做错了什么,或者有更好的方法吗?

非常感谢

编辑:我确实想要一些 html 标签(比如 工作,所以我不能使用 $.text(); 不幸的是..)

I'm having a problem trying to escape some code... Basically, I want to escape "<" and ">" but I want them to APPEAR in my #output div as "<" and ">". Currently, they appear as as "<" and ">" on the page.

This is obviously to prevent anyone exploiting / injecting scripts on the page. This is my code:

var textval = $("#textarea").val();                   //textarea

filtered = textval.replace(/</gi,"<");           //replace "<"

$("#output").html(filtered);                     //insert textarea data into div

Can anybody spot what I am doing wrong, or are there any better ways of doing this?

Many thanks

EDIT: I do want SOME html tags (like <b> to work, so I can't use $.text(); unfortunately..)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风月客 2024-10-28 00:32:55

试试这个:

var textval = $("#textarea").val();
$("#output").text(textval);      

jQuery 提供了两种方法 - $.text() 和 $.html(),其中方法名称不言自明:)

Try this:

var textval = $("#textarea").val();
$("#output").text(textval);      

jQuery offers two methods - $.text() and $.html() where the method names speak for themselves :)

木有鱼丸 2024-10-28 00:32:55

有点不同的替换,但对我有用(即使使用 .html() )。

演示

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() 是更好的方法)

A little different replace, but works for me (even with .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>

(This is just to verify it can be done, .text() is the better approach)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文