新闻中心

JS如何将用户输入的富文本转换为HTML_JS将用户输入的富文本转换为HTML方法

2025-10-11
浏览次数:
返回列表
答案:前端展示富文本需防范XSS风险,可选innerHTML直接渲染、DOMParser解析过滤、DOMPurify净化或文本转HTML方法。

js如何将用户输入的富文本转换为html_js将用户输入的富文本转换为html方法

用户输入的富文本内容通常包含格式,比如加粗、斜体、换行、链接等。在前端开发中,如何安全地将这些内容转换为HTML并展示,是常见需求。J*aScript提供了多种方式处理这一过程。

使用innerHTML直接渲染

当用户通过富文本编辑器(如 QuillTinyMCE)输入内容后,获取到的内容通常是带有HTML标签的字符串。可以直接插入到页面中:

document.getElementById("content").innerHTML = userInput;

注意:这种方式存在XSS(跨站脚本)风险,如果内容来自不可信用户,需先进行过滤。

使用DOMParser解析并过滤危险标签

为了安全,可以先用 DOMParser 解析HTML字符串,再遍历节点,移除或保留特定标签:

const parser = new DOMParser();
const doc = parser.parseFromString(userInput, 'text/html');
// 只保留 p、strong、em、a 标签
const allowedTags = ['P', 'STRONG', 'EM', 'A'];
Array.from(doc.body.children).forEach(child => {
  if (!allowedTags.includes(child.tagName)) {
    child.remove();
  }
});
document.getElementById("content").innerHTML = doc.body.innerHTML;

使用第三方库进行净化(推荐)

更稳妥的方式是使用专门的库来净化HTML,例如:DOMPurify

引入DOMPurify:

秀脸FacePlay 秀脸FacePlay

一款集成AI换脸、照片跳舞等多种AI特效玩法的App

秀脸FacePlay 124 查看详情 秀脸FacePlay

使用示例:

const cleanHTML = DOMPurify.sanitize(userInput);
document.getElementById("content").innerHTML = cleanHTML;

DOMPurify 默认会移除脚本、事件属性等危险内容,同时保留常见的富文本格式,适合生产环境。

处理纯文本输入模拟富文本效果

如果用户只是在textarea中输入带换行和链接的文本,可手动转换:

function textToHtml(text) {
  return text
    .replace(/&/g, '&')
    .replace(/, '     .replace(/>/g, '>')
    .replace(/\n/g, '
')
    .replace(/(https?:\/\/[^\s]+)/g, '$1');
}
document.getElementById("content").innerHTML = textToHtml(userInput);

此方法适用于简单场景,如聊天框、评论等。

基本上就这些。选择哪种方式取决于输入来源和安全要求。用户可控且可信时可用 innerHTML;面向公众内容时,强烈建议使用 DOMPurify 进行净化。

以上就是JS如何将用户输入的富文本转换为HTML_JS将用户输入的富文本转换为HTML方法的详细内容,更多请关注其它相关文章!


# 富文本  # javascript  # java  # js  # 前端  # 前端开发  # html  # 相关文章  # 南京360关键词排名  # 七台河优化seo  # 铁岭seo优化公司必看  # 湖北省营销推广加盟  # 清远网站竞价推广策划  # 辽宁省建设厅网站链接  # 成都网站建设管理  # 昆明最好的网站建设企业  # 雪糕营销推广方案怎么写  # 营销推广算法分析  # 适用于  # 遍历  # 这一  # 快速查找  # 换行  # 显示效果  # 移除  # 如何将  # 转换为  # .net  # cdn 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Archive of Our Own官网直达 AO3最新可用地址一览  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法  电脑IP地址怎么查 查看本机IP地址的几种方法  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  c++ 命名空间怎么用 c++ namespace使用指南  如何在CSS中使用浮动制作导航栏_float实现水平菜单  12306选座如何查看座位示意图_12306座位示意图解读与使用  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  163邮箱登录密码 163邮箱忘记密码找回  《噬血代码2》新预告片发布 展示游戏剧情  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  C++如何实现异步操作_C++11使用std::future和std::async进行异步编程  红果短剧网页版官网入口 官方最新网址发布  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  快手网页版在线登录 快手网页版官网入口快速访问  邮政快递包裹最新位置 邮政快递实时追踪入口  taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  126邮箱账号注册 电脑版登录入口  微信客户端如何收红包_微信客户端接收红包使用教程  python3时间如何用calendar输出?  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  Typer应用中灵活处理命令行参数的令牌化与解析  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  Pandas DataFrame:高效添加条件计算列  UC浏览器官网入口2025最新 UC浏览器网页版正式地址  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  解决Django多数据库/多Schema环境下外键迁移问题  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  AO3最新可访问网址 Archive of Our Own官方在线入口  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  C++指针和引用有什么区别_C++内存管理核心概念深度解析  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  微信网页版官方入口教程 微信网页版网页版快速登录步骤  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧 

搜索