javascript - 如何在 javascript 中转义某些 html?

标签 javascript html-encode

给定文本

<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/

相关文章:

PHP - 在 MySQL 数据库中存储文本

asp.net-mvc - Razor 编码一切

asp.net-mvc - 如何处理 HTML 编码的 MVC View 中的换行符?

c# - Html 编码导致 Chrome 中出现新行

javascript - 将 moment.js 默认设置为特定日期时间

javascript - 为什么 __proto__ 周围的方括号使其在对象中可枚举

javascript - VueJS + Quasar 框架 + 谷歌地图 JS API

javascript - 具有多个参数的 HTML 5 网络 worker

javascript - 无法在标题图片上获得 skrollr 视差效果

javascript - 是否有来自 asp.net 的与 htmlencode/htmldecode 等效的 javascript?