给定文本
<b>This is some text</b>
我想将其写入我的页面,以便它显示如下:
<b>This is some text</b>
不是这样的
这是一些文字
使用 escape("<b>This is some text</b>")
在 Firefox 中给了我这个可爱的 gem
%3Cb%3EThis%20is%20some%20text%3C/b%3E
不完全是我想要的。有什么想法吗?
最佳答案
这应该适合您:http://blog.nickburwell.com/2011/02/escape-html-tags-in-javascript.html
function escapeHTML( string )
{
var pre = document.createElement('pre');
var text = document.createTextNode( string );
pre.appendChild(text);
return pre.innerHTML;
}
安全警告
该函数不会转义单引号和双引号,如果在错误的上下文中使用,仍然可能导致 XSS。例如:
var userWebsite = '" onmouseover="alert(\'gotcha\')" "';
var profileLink = '<a href="' + escapeHtml(userWebsite) + '">Bob</a>';
var div = document.getElemenetById('target');
div.innerHtml = profileLink;
// <a href="" onmouseover="alert('gotcha')" "">Bob</a>
感谢buffer指出这个案例。摘自this blog post的片段.
关于javascript - 如何在 javascript 中转义某些 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251520/