TL;DR
注意<pre> is just for styles,所以你必须转义所有HTML。
只为你 HTML“化石”:使用 <xmp> 标签
这并不为人所知,但它确实存在,甚至 chrome 仍然支持它,但是使用 pair 的 <xmp> 标签 不推荐 值得信赖on - 它只适用于您的 HTML 化石,但它是处理您的个人内容的一种非常简单的方法,例如文档。甚至 w3.org Wiki 在其示例中也说:“不,真的。不要使用它。”
您可以将任何 HTML(不包括 </xmp> 结束标记)放在 <xmp></xmp> 内
<xmp>
<html> <br> just any other html tags...
</xmp>
正确的版本
正确的版本可以被认为是存储为 STRING 并在一些 转义 功能/机制的帮助下显示的 HTML。
记住一件事——类 C 语言中的字符串通常写在单引号或双引号之间——如果你用双引号括起来你的字符串 => 你应该转义双精度数(可能用\),如果你把你的单曲中的字符串 => 转义单曲(可能带有\)...
最常见的 - 服务器端语言转义(例如在 PHP 中)
服务器端脚本语言通常有一些内置函数来转义 HTML。
<?php
$html = "<html> <br> or just any other HTML"; //store html
echo htmlspecialchars($html); //display escaped html
?>
请注意,在 PHP 8.1 中进行了更改,因此您不再需要指定 ENT_QUOTES 标志:
标志从 ENT_COMPAT 更改为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
客户端方式(以 JavaScript / JS&jQuery 为例)
在客户端脚本中可以实现与服务器端类似的方法。
纯 JavaScript
没有功能,但有默认行为,如果设置element's innerText或node's textContent:
document.querySelector('.myTest').innerText = "<html><head>...";
document.querySelector('.myTest').textContent = "<html><head>...";
HTMLElement.innerText 和 Node.textContent 不是一回事!您可以在上面的 MDN 文档链接中找到更多关于差异的信息
jQuery(一个 JS 库)
jQuery 有 $jqueryEl.text() 用于此目的:
$('.mySomething .test').text("<html><head></head><body class=\"test\">...");
只需记住与服务器端相同的事情 - 在类似 C 的语言中,将包含字符串的引号转义。