富文本用于很多场景,内容包括文本、粗体文字、变色文本、图片等。如下图所示:
在这里插入图片描述
这些富文本内容是如何存储到后端,又是如何从后端获取原样展示到页面上的呢?
具体交互流程如下:

  • 前端通过富文本编辑器生成富文本内容
  • 将富文本内容发送到后端进行存储
  • 前端获取富文本内容,进行页面展示

富文本内容: 这里的富文本内容其实就是含有标签的字符串,比如图中的这些富文本内容就是类似以下字符串:

普通文字、<b>粗体文字</b><s>删除线文字</s><span style="color: red;">变色文字1</span><img style="width: 100px;height: 100px;" src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1022109268,3759531978&fm=26&gp=0.jpg"  />

存储的时候将这些带有html标签的字符串整体存储,前端获取的时候同样返回

前端如何展示: (直接上代码)

<!DOCTYPE html>
<html>
   <head>
   	<meta charset="utf-8">
   	<title></title>
   </head>
   <body>
   	<div id="t"></div>
   	
   </body>
   
   <script>
   	// js 页面加载完成时自动执行该js
   	window.onload = function(){
   		var s = '普通文字、<b>粗体文字</b> 、<s>删除线文字</s> 、<span style="color: red;">变色文字1</span><img style="width: 100px;height: 100px;" src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1022109268,3759531978&fm=26&gp=0.jpg"  />';
   		var t = document.getElementById('t');
   		// 重点:将字符串解析成html进行展示
   		t.innerHTML = s;
   		// 当做普通字符串
   		// t.textContent = s;
   	}
   </script>
</html>

页面效果如下:

  • t.innerHTML = s;执行效果

在这里插入图片描述

  • t.textContent = s;执行效果
    在这里插入图片描述

从上图效果我们可以看到,innerHTML将普通字符串当做html运行,这样就将富文本内容正确的展示出来了。

其他: 对于不同的前端框架,有不同的api对应该操作:

	// jQuery
	$('t').html(s);
	
	// Vue (标签中使用,js中使用同原生js或jQuery)
	v-html=s
	
	// Thymeleaf (标签中使用,js中使用同原生js或jQuery)
	th:utext="${s}"

	......其他
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐