当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…