【发布时间】:2017-02-19 22:08:27
【问题描述】:
问题被完全重写为更紧凑和清晰的形式。
当我用sn-ps编写HTML文档时,我不想手动将每个<更改为<。在我看来,最明显的方法是使用 JS 来完成这项任务,如下所示。但是,它不起作用。
如何解决?
<head>
<style>
body {
width: 500px;
}
</style>
<script>
window.onload = function() {
var pre = document.querySelector("#html-example");
pre.innerHTML = pre.innerHTML
.replace(/</g, '<')
.replace(/>/g, '>');
};
</script>
</head>
<body>
<h1>
Chapter 1
</h1>
<p>
Here is the first tutorial of HTML for total beginners.
Typical HTML contains of 2 main parts: head and body.
Here is an exmaple of how it looks:
</p>
<pre id="html-example" style="background-color: aliceblue;">
<head>
Head content goes here. Only very technical things
</head>
<body>
Body content goes here. Not necessary very technical.
For example, something about cats.
</body>
</pre>
<p>
..............
</p>
</body>
当前结果:
想要的结果:
【问题讨论】:
-
“我想了解如何修复脚本方式的疏忽。” 不能;不要这样做。这是完全不安全的,也没有充分的理由。
-
@Ryan 好的,但是我怎样才能完成我的任务呢?我有静态 HTML 文档,我在其中撰写有关 HTML 和 JS 的文章供我个人本地使用。显然,这些文章包含 HTML sn-ps 及其描述。除了手动替换每个
&lt;之外,有没有办法编写它?如果没有 JS 方式,那么好吧,也许我应该安装一些简单的服务器,它会被 PHP 或其他服务器端语言转义?在 StackOverflow,我们编写了很多 sn-ps 而不用 esaping,并且所有这些代码都成功且安全地发布到了网络上。 -
Stack Overflow 使用 Markdown;如果你愿意,你也可以这样做,使用像 Jekyll 这样的静态网站生成器。
-
好吧,我了解 Markdown。但也有其他关于编程的网站和论坛,有时他们不使用 Markdown。尽管如此,用户在这些网站上发布的代码仍然成功逃脱。如果我不能(或不应该)用 JS 完成它,我想知道在大多数情况下如何实现它。
-
使用动态服务器端渲染,是的,或者通过像前面提到的静态站点生成器那样进行预渲染(这似乎适合您的情况)。
标签: javascript jquery dom escaping