使用 jQuery 转义 HTML 字符串

2022-08-29 22:38:18

有谁知道一种简单的方法可以从jQuery中的字符串中转义HTML?我需要能够传递任意字符串并正确转义它以显示在HTML页面中(防止JavaScript / HTML注入攻击)。我确信可以扩展jQuery来做到这一点,但我目前对框架的了解还不够多,无法实现这一点。


答案 1

还有来自胡子的解决方案.js

var entityMap = {
  '&': '&',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#39;',
  '/': '&#x2F;',
  '`': '&#x60;',
  '=': '&#x3D;'
};

function escapeHtml (string) {
  return String(string).replace(/[&<>"'`=\/]/g, function (s) {
    return entityMap[s];
  });
}

答案 2

由于您使用的是 jQuery,因此只需设置元素的 text 属性:

// before:
// <div class="someClass">text</div>
var someHtmlString = "<script>alert('hi!');</script>";

// set a DIV's text:
$("div.someClass").text(someHtmlString);
// after: 
// <div class="someClass">&lt;script&gt;alert('hi!');&lt;/script&gt;</div>

// get the text in a string:
var escaped = $("<div>").text(someHtmlString).html();
// value: 
// &lt;script&gt;alert('hi!');&lt;/script&gt;