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转文本的资料请关注脚本之家其它相关文章!

相关文章

  • javascript中sessionStorage的存储机制的使用小结

    javascript中sessionStorage的存储机制的使用小结

    本文主要介绍了javascript中sessionStorage的存储机制的使用,包括其作用域、生命周期、存储容量、数据类型以及API的使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • 小试SVG之新手小白入门教程

    小试SVG之新手小白入门教程

    这篇文章主要给大家介绍了关于SVG的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 分享10个优化代码的CSS和JavaScript工具

    分享10个优化代码的CSS和JavaScript工具

    如果你想在保持文件的时候或执 行的阶段lint代码,那么linting工具也可以如你所愿。这取决于个人的选择。如果你正在找寻用于CSS和JavaScript最好的 linting工具,那么请继续阅读
    2016-05-05
  • JavaScript使用多线程实现一个大文件上传

    JavaScript使用多线程实现一个大文件上传

    这篇文章主要为大家详细介绍了JavaScript使用多线程实现一个大文件上传的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-11-11
  • 怎样用Javascript实现建造者模式

    怎样用Javascript实现建造者模式

    这篇文章主要介绍了怎样用Javascript实现建造者模式,想学习设计模式的同学,可以参考下
    2021-04-04
  • 高性能js数组去重(12种方法,史上最全)

    高性能js数组去重(12种方法,史上最全)

    数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看
    2019-12-12
  • JS执行删除前的判断代码

    JS执行删除前的判断代码

    这篇文章主要介绍了JS执行删除前如何实现判断,需要的朋友可以参考下
    2014-02-02
  • layui输入框中只允许输入整数的实现方法

    layui输入框中只允许输入整数的实现方法

    今天小编就为大家分享一篇layui输入框中只允许输入整数的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Object.defineproperty方法示例详解

    Object.defineproperty方法示例详解

    Object.defineproperty 的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性,这篇文章主要介绍了Object.defineproperty方法,需要的朋友可以参考下
    2022-12-12
  • JavaScript遍历数组的方法代码实例

    JavaScript遍历数组的方法代码实例

    这篇文章主要介绍了JavaScript遍历数组的方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论