首页 > 其他分享 >如何让textarea标签中的内容原格式输出?

如何让textarea标签中的内容原格式输出?

时间:2024-11-26 10:47:49浏览次数:7  
标签:pre textarea space 标签 HTML 格式 output white

要让 <textarea> 标签中的内容原格式输出,你需要处理空格、换行符和 HTML 特殊字符。以下几种方法可以实现:

1. 使用 <pre> 标签包裹输出内容:

这是最简单的方法,<pre> 标签会保留其中的空格和换行符。 你获取 textarea 的值,然后将其插入到 <pre> 标签中进行显示。

const textarea = document.getElementById('myTextarea');
const output = document.getElementById('output');

textarea.addEventListener('input', () => {
  output.textContent = textarea.value;
});

// HTML:
// <textarea id="myTextarea"></textarea>
// <pre id="output"></pre>

2. 使用 CSS 的 white-space 属性:

你可以使用 white-space: pre-wrap;white-space: pre-line; CSS 属性来控制输出的格式。

  • white-space: pre-wrap; 保留所有空格和换行符,并在必要时进行换行。
  • white-space: pre-line; 合并多个空格为一个空格,并保留换行符。
// JavaScript (可选,用于动态更新):
const textarea = document.getElementById('myTextarea');
const output = document.getElementById('output');

textarea.addEventListener('input', () => {
  output.textContent = textarea.value;
});

// CSS:
#output {
  white-space: pre-wrap; /* 或 pre-line */
}

// HTML:
// <textarea id="myTextarea"></textarea>
// <div id="output"></div>

3. 将特殊字符转换为 HTML 实体:

为了防止 HTML 特殊字符(如 <>&)被解释为 HTML 代码,你需要将其转换为相应的 HTML 实体(如 &lt;&gt;&amp;)。

function escapeHtml(unsafe) {
  return unsafe
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&#039;");
}

const textarea = document.getElementById('myTextarea');
const output = document.getElementById('output');

textarea.addEventListener('input', () => {
  output.innerHTML = escapeHtml(textarea.value); // 注意这里使用 innerHTML
});

// HTML:
// <textarea id="myTextarea"></textarea>
// <div id="output"></div>

选择哪种方法取决于你的具体需求:

  • 如果你只需要保留空格和换行,使用 <pre> 标签或 white-space CSS 属性是最简单的。
  • 如果你还需要处理 HTML 特殊字符,则需要使用 HTML 实体转换。

示例: 假设你的 textarea 输入内容为:

Hello
  World!
<script>alert('XSS!');</script>
  • 使用 <pre>white-space: pre-wrap; 输出:
Hello
  World!
<script>alert('XSS!');</script>  // 虽然显示了代码,但浏览器不会执行
  • 使用 HTML 实体转换输出:
Hello
  World!
&lt;script&gt;alert('XSS!');&lt;/script&gt; //  代码被转换为文本显示,避免XSS攻击

记住,如果你的目标是防止 XSS 攻击,仅仅使用 <pre>white-space 是不够的,你必须对 HTML 特殊字符进行转义。 使用 escapeHtml 函数或类似的方法来确保安全。

标签:pre,textarea,space,标签,HTML,格式,output,white
From: https://www.cnblogs.com/ai888/p/18569635

相关文章

  • 说说你对HTML5的keygen标签的理解,它的作用是什么?
    HTML5的<keygen>元素原本的设计目的是为了辅助网页表单生成公钥-私钥对,以便进行客户端证书的创建。用户在提交表单时,<keygen>会生成一个新的密钥对。私钥会存储在用户的本地计算机上,而公钥则会与表单数据一起提交到服务器。具体来说,<keygen>的作用是:生成密钥对:它会在浏......
  • C#.NET CORE SM2国密PKCS12格式私钥证书解析
    C#.NETCORE SM2国密PKCS12格式私钥证书解析、加载、签名、加密。 PKCS12格式私钥证书,和常见到.sm2文件私钥证书不同。它虽是BASE64编码的字符串,但不能用解析.sm2文件的方法解析。上来还是nuget下载引用 Portable.BouncyCastle库。工具类 GmUtil:usingOrg.BouncyCastle......
  • [编程笔记] 系统日期格式引起的bug
    系统获取的日期格式不对,导致程序出现异常,出现过多次了,这里记录一下。起因是测试说某个跟日期相关的活动,在他环境里失效,而我们开发本地测试了多遍都是正常的,这就很奇怪了,有种想给他重装系统的念头,哈哈。经过一系列的分析和排查,发现是他本地系统设置的日......
  • 标签库
    文档类型声明(<!DOCTYPE>):虽然不是真正的HTML标签,但它用于声明文档使用的HTML版本。例如,表示使用HTML5。HTML标签():包裹整个HTML文档,包括头部和主体部分。头部信息标签():位于HTML文档的顶部,包含元数据(如字符集、样式表链接、脚本引用等),不直接显示在页面上。标题标签(......
  • WEB攻防-XSS跨站&CSP策略&HttpOnly属性&Filter过滤器&标签闭合&事件触发
    1.CSP(ContentSecurityPolicy内容安全策略)内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。禁止加载外域代码,防止复杂的攻击......
  • 【数据挖掘】一、基于LDA的用户兴趣建模(兴趣标签生成模型)--用户兴趣挖掘模型
    说明        本文的数据集来源于英雄联盟评论数据集,旨在挖掘英雄联盟评论数据中的主题兴趣标签。本次实验是基于LDA模型实现用户的兴趣建模,即从英雄联盟评论数据中生成用户感兴趣的标签。                本文是基于英雄联盟的评论数据集,采用基于......
  • HTML-CSS-JS-day01:html常见的标签
    前端--一、相关概念1、前后端--技术层面程序运行在客户端上,这样的程序称为前端程序运行在服务器端2、前后台--应用层面如果服务是面向所有用户,这样的服务称为前台服务如果服务是面向相关的管理或者维护人员,这样的服务称为后台服务二、web(网页)访问流程基于http/htt......
  • 接口实现任意格式图像的传参接收
    基于FastAPI的图像接收接口设计与实现概述在现代Web应用中,图像处理是一个常见的需求。无论是图像识别、图像分类还是图像编辑,都需要一个高效且灵活的接口来处理不同来源的图像数据。本文将详细介绍如何设计一个基于FastAPI的接口,使其能够接受任意类型的图像对象,并进行相应......
  • 记录一个Linux代码移植到Windows平台下的Visual Studio 2022的代码编码格式的问题
    一、前言工作上与公司的前辈对接,他给了我一份在linux下面编写的代码压缩包,按照道理来说使用条件宏编译不同的windows和linux的API即可实现代码的通用。但是我在VisualStudio2022下面编译的时候缺发生了非常奇怪的事情。随便编译就出现很多报错,但实际上这些报错并不是真正的报错......
  • 防伪标签怎么制作:详解防伪标签制作的步骤与注意事项
    防伪标签的制作并不是一项简单的工作,涉及到多个步骤和细致的规划。对于企业来说,防伪标签不仅是保护自身品牌的工具,更是对消费者的承诺。每当看到那些闪烁的二维码和精美的防伪标识时,都会让人感受到品牌背后深厚的信任感。经历过假冒伪劣产品的困扰后,许多企业开始重视防伪标签的......