JavaScript实现HTML转换为纯文本的几种方法

 更新时间:2025年05月08日 14:32:29   作者:梦幻星辰吧  
本文主要介绍了六种将HTML转换为纯文本的方法,包括使用DOMParser、创建临时div元素、正则表达式替换、Element.textContent(浏览器环境)、DOMPurify库和JSDOM库,每种方法都有其优缺点,选择合适的方法取决于具体需求和使用环境,需要的朋友可以参考下

1. 使用 DOMParser 和 textContent

DOMParser 可以将 HTML 字符串解析为 DOM 文档,然后使用 textContent 属性获取纯文本内容。

function htmlToTextUsingDOMParser(html) {
    const parser = new DOMParser();
    const doc = parser.parseFromString(html, 'text/html');
    return doc.body.textContent || '';
}

// 示例使用
const htmlString = '<p>这是一段 <strong>HTML</strong> 文本。</p>';
const plainText = htmlToTextUsingDOMParser(htmlString);
console.log(plainText); 

2. 创建临时 div 元素

创建一个临时的 div 元素,将 HTML 内容插入其中,然后使用 textContent 属性获取纯文本。

function htmlToTextUsingDiv(html) {
    const div = document.createElement('div');
    div.innerHTML = html;
    return div.textContent || '';
}

// 示例使用
const htmlString2 = '<h1>标题</h1><p>段落内容</p>';
const plainText2 = htmlToTextUsingDiv(htmlString2);
console.log(plainText2); 

3. 正则表达式替换

使用正则表达式替换 HTML 标签,从而得到纯文本。不过这种方法有局限性,因为正则表达式很难处理所有复杂的 HTML 标签情况。

function htmlToTextUsingRegex(html) {
    return html.replace(/<[^>]*>?/gm, '');
}

// 示例使用
const htmlString3 = '<a href="#" rel="external nofollow"  rel="external nofollow" >链接</a> 文本';
const plainText3 = htmlToTextUsingRegex(htmlString3);
console.log(plainText3); 

以上三种方法各有优缺点,DOMParser 和创建临时 div 元素的方法更可靠,因为它们能正确处理 HTML 实体和嵌套标签;而正则表达式方法简单但不够健壮,仅适用于简单的 HTML 字符串。

除了之前提到的方法,还有其他几种将 HTML 转换为纯文本的方式,下面为你深入介绍:

4. 使用 Element.textContent(浏览器环境)

如果你在浏览器环境中,可以直接创建一个 div 元素并将 HTML 内容插入其中,然后获取 textContent 属性。这种方法和前面创建临时 div 元素类似,但更简洁。

function htmlToTextUsingElement(html) {
    const element = document.createElement('div');
    element.innerHTML = html;
    return element.textContent;
}

// 示例使用
const htmlString4 = '<span>这是一个 <em>示例</em>。</span>';
const plainText4 = htmlToTextUsingElement(htmlString4);
console.log(plainText4); 

5. 使用 DOMPurify 库

DOMPurify 是一个用于净化 HTML 输入的库,它可以帮助你安全地移除 HTML 标签,同时避免 XSS 攻击。在处理不可信的 HTML 输入时,这是一个很好的选择。

首先,你需要安装 DOMPurify

npm install dompurify

然后在代码中使用:

import DOMPurify from 'dompurify';

function htmlToTextUsingDOMPurify(html) {
    const clean = DOMPurify.sanitize(html, { ALLOWED_TAGS: [] });
    return clean;
}

// 示例使用
const htmlString5 = '<a href="#" rel="external nofollow"  rel="external nofollow"  onclick="alert(\'XSS\')">危险链接</a>';
const plainText5 = htmlToTextUsingDOMPurify(htmlString5);
console.log(plainText5); 

6. 使用 JSDOM(Node.js 环境)

如果你在 Node.js 环境中,可以使用 JSDOM 库来模拟浏览器环境,然后获取纯文本内容。

首先,安装 JSDOM

npm install jsdom

然后在代码中使用:

const { JSDOM } = require('jsdom');

function htmlToTextUsingJSDOM(html) {
    const dom = new JSDOM(html);
    return dom.window.document.body.textContent;
}

// 示例使用
const htmlString6 = '<h2>Node.js 示例</h2><p>这是一个使用 JSDOM 的示例。</p>';
const plainText6 = htmlToTextUsingJSDOM(htmlString6);
console.log(plainText6); 

方法对比

  • DOMParserElement.textContent:适用于浏览器环境,简单易用,能正确处理 HTML 实体和嵌套标签。
  • DOMPurify:主要用于净化 HTML 输入,在处理不可信的 HTML 时非常有用,能有效防止 XSS 攻击。
  • JSDOM:适用于 Node.js 环境,模拟浏览器环境来处理 HTML,功能强大但引入了额外的依赖。
  • 正则表达式:简单快速,但无法处理复杂的 HTML 结构和嵌套标签,容易出错。

根据你的具体需求和使用环境,选择合适的方法来将 HTML 转换为纯文本。

以上就是JavaScript实现HTML转换为纯文本的几种方法的详细内容,更多关于JavaScript HTML转文本的资料请关注脚本之家其它相关文章!

相关文章

  • js和jquery实现监听键盘事件示例代码

    js和jquery实现监听键盘事件示例代码

    这篇文章主要为大家介绍了js实现监听键盘事件示例代码,监听键盘组合键CTRL+C,以便做出对应的响应,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 详细解析let和const命令

    详细解析let和const命令

    这篇文章主要介绍了详细解析let和const命令,let和const是es6中新增的命令,一般let用来声明变量而const则用来声明常量,更多相关内容感兴趣的小伙伴可以参考一下
    2022-06-06
  • layui富文本编辑器前端无法取值的解决方法

    layui富文本编辑器前端无法取值的解决方法

    今天小编就为大家分享一篇layui富文本编辑器前端无法取值的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript实现轮播图案例

    JavaScript实现轮播图案例

    这篇文章主要为大家详细介绍了JavaScript实现轮播图案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • JS实现简单获取最近7天和最近3天日期的方法

    JS实现简单获取最近7天和最近3天日期的方法

    这篇文章主要介绍了JS实现简单获取最近7天和最近3天日期的方法,涉及javascript针对日期与时间的相关数值运算与转换操作技巧,需要的朋友可以参考下
    2018-04-04
  • 基于JS实现数字动态变化显示效果附源码

    基于JS实现数字动态变化显示效果附源码

    我们经常看到液晶电子表样式,数字动态显示,动态变化的在指定元素内显示数字。怎么实现效果呢?下面小编给大家带来了基于JS实现数字动态变化显示效果 ,感兴趣的朋友一起看看吧
    2019-07-07
  • js闭包学习心得总结

    js闭包学习心得总结

    这篇文章主要介绍了JS闭包的学习心得,以及分析其中遇到的问题,需要的朋友跟着参考下吧。
    2018-04-04
  • 围观tangram js库

    围观tangram js库

    Tangram开源将近一周,持续围观了几天。写一个简单的围观笔记吧。
    2010-12-12
  • 一篇文章带你入门前端的滑块验证怎么做

    一篇文章带你入门前端的滑块验证怎么做

    滑块验证也被称为拼图验证码,是一种用于验证用户是否为人类而不是机器人的常见方法,这篇文章主要介绍了前端滑块验证怎么做的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • JS在textarea光标处插入文本的小例子

    JS在textarea光标处插入文本的小例子

    本实例使用Javascript实现在textarea光标处插入文本,支持多种浏览器
    2013-03-03

最新评论