前端答疑—换行如何输出在页面上

简介: 工作中我们有下面几种方式收集用户输入的内容input 输入框,单行,整体样式,纯文本。textarea 输入框,多行,整体样式,纯文本。contentEditable,多行,独立样式,富文本。其他富文本编辑器,多行,独立样式,富文本。在不想使用那么重的富文本编辑器的情况下,又想可以换行,那么 textarea 就是我们的不二之选。下面我们就来说一下,如何在回显的时候也显示换行。

方案一:textarea 显示



既然我使用 textarea 输入的,那么我使用 textarea 显示总可以吧。


测试地址


textarea 方案优点


  1. 无 xss 注入风险


  1. 无需特殊处理,内部就认识 \n ,空格也认识


textarea 方案缺点


  1. 需要设置不可编辑


  1. Readonly
  2. Disabled


  1. 需要设置不可缩放


  1. resize:none


  1. 无法自动撑开内容区域


  1. 需要 js 辅助计算,具体代码我就不写了。原理就是构造一个和当前 textarea 一样大的 div,然后使用 div 的高度。一般用于可以输入的 textarea 自动变大。


方案二:v-html、innerHTML、.html()


既然我们不识别 \n,那我们就把他转换成标签来显示。


这个方案最大的问题就是千万小心 xss 问题。


bVbExWe.webp.jpg


测试地址


优点


  1. 可以自动撑开内容区


缺点


  1. xss 注入风险,需要转义为实体编码。


  1. 空格还是不识别。


方案三:v-text、innerText、textContent、.text()


这个方案也就 innerText 还可以。因为 innerText 会自动转换 \n<br>


bVbExYY.webp.jpg


测试地址


优点


  1. 无 xss 注入问题


缺点


  1. 只有 InnerText 会自动转换换行
  2. 不支持空格。


方案四:特殊标签 <pre>


bVbExZm.webp.jpg


这个方案就很理想了。


测试地址


优点


  1. 支持空格
  2. 支持换行
  3. 兼容性极好


缺点


  1. 需要使用特定标签?这也不算 bug 吧。


  1. 不换行。


方案五:white-space


基于方案四,其实还有对应的css方案,那就是 white-space


测试地址


bVbEx0r.webp.jpg

bVbEx0r.webp.jpg缺点


  1. 兼容性问题吧


优点


  1. 属性值较多,可以适配各种场景
相关文章
|
5月前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
|
20天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
前端开发 数据安全/隐私保护
.自定义认证前端页面
.自定义认证前端页面
10 1
.自定义认证前端页面
|
19天前
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
27天前
|
前端开发 安全 JavaScript
在阿里云快速启动Appsmith搭建前端页面
本文介绍了Appsmith的基本信息,并通过阿里云计算巢完成了Appsmith的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Appsmith,非技术同学也能轻松搞定。
|
2月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
38 18
|
3月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
108 2
前端JS读取文件内容并展示到页面上
|
2月前
|
前端开发 数据安全/隐私保护
angular前端基本页面验证
angular前端基本页面验证
31 1
|
2月前
|
前端开发
搭建个人博客--1、前端页面
搭建个人博客--1、前端页面
22 1
|
4月前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
75 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01