当前位置:首页 > JavaScript

js实现htmlencode

2026-02-01 14:43:30JavaScript

HTML 编码的实现方法

在 JavaScript 中实现 HTML 编码(HTMLEncode)通常是为了防止 XSS(跨站脚本攻击),将特殊字符转换为对应的 HTML 实体。以下是几种常见的实现方式:

使用 innerHTMLtextContent 进行编码

通过创建一个虚拟的 DOM 元素,利用 textContent 属性自动转义特殊字符,再通过 innerHTML 获取编码后的结果:

function htmlEncode(str) {
  const div = document.createElement('div');
  div.textContent = str;
  return div.innerHTML;
}

// 示例
const encoded = htmlEncode('<script>alert("xss")</script>');
// 输出: "&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;"

手动替换特殊字符

通过正则表达式或字符串替换,将关键字符转换为对应的 HTML 实体:

function htmlEncode(str) {
  return str
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

// 示例
const encoded = htmlEncode('Test "quote" & <tag>');
// 输出: "Test &quot;quote&quot; &amp; &lt;tag&gt;"

使用 encodeURIComponent 结合额外处理

encodeURIComponent 可以转义大部分特殊字符,但需额外处理单引号和斜杠:

function htmlEncode(str) {
  return encodeURIComponent(str)
    .replace(/'/g, '%27')
    .replace(/\//g, '%2F');
}

// 示例
const encoded = htmlEncode('<a href="/test">link</a>');
// 输出: "%3Ca%20href%3D%22%2Ftest%22%3Elink%3C%2Fa%3E"

使用第三方库

现代前端开发中,可以使用现成的库如 lodashhe 实现更全面的编码:

js实现htmlencode

// 使用 he 库(需安装)
import he from 'he';
const encoded = he.encode('<div>Hello</div>');
// 输出: "&lt;div&gt;Hello&lt;/div&gt;"

注意事项

  • 如果内容需要插入到 HTML 属性中,需额外转义单引号(')和双引号(")。
  • 对于富文本内容(如用户输入的 HTML),需使用专门的净化库(如 DOMPurify)而非简单编码。
  • 编码后的内容需根据使用场景决定是否配合其他安全措施(如 CSP)。

标签: jshtmlencode
分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…