有哪些方法可用于显示[在html中]涉及脚本标记和代码段的代码段。同时阻止浏览器执行该脚本代码?
答案 0 :(得分:5)
对所有<
和>
字符进行编码,以便最终得到
<div>
<h2>Here's some JS code</h2>
<pre>
<script type="text/javascript">
var x = 7;
var y = 10;
if (x < y) {
alert('this alert will not fire!');
}
</script>
</pre>
</div>
答案 1 :(得分:2)
你需要像这样转义特殊的html相关字符:
<body>
<p><script type="text/javascript" ></p>
<p>alert("hello world!");</p>
<p></script><br />
</p>
</body>
有关完整列表,请参阅:http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php
答案 2 :(得分:1)
对所有HTML实体(&lt;,&gt;,&amp; etc)进行编码,并将所有内容包装在预标签中以保留格式。
<pre>
<script type="text/javascript">
alert('test');
</script>
</pre>
一个方便的转换器: http://www.rishida.net/tools/conversion/
答案 3 :(得分:1)
回到HTML2的时代,正是有<xmp>
和<listing>
元素:你可以做到。 e.g。
<xmp>Because this is HTML2, there isn't a <script> tag to worry about anyway.</xmp>
它会将标记显示为内容,而不是将它们解释为元素的开头和结尾(但由于显而易见的原因,你无法做</xmp>
)。
然而,对于浏览器编写者和网络作者来说,拥有这种能力实际上导致了比他们帮助的问题更多的问题。因此,它们在HTML3.2中被弃用(或者可以说是HTML3,但这并不是HTML3的唯一参数 - 另一个是带有“HTML3”的文档是计算的...),并且用HTML4删除了。
因此,唯一要做的就是逃避它。
<pre>
有助于格式化,但我经常只是做一个find-replace来代替用不间断的空格交换每个空格。
完成后,您可以比<xmp>
和<listing>
允许的更精彩地呈现它,并且有像beautyOfCode和google-code-prettify那样的库来完成繁重的工作对你而言。
答案 4 :(得分:0)
说实话,我不确定这是否是一个很好的方法,所以如果不是,我希望有人会告诉我。
如果您不想通过转换器运行代码,可以使用此jQuery函数将元素的.html
显示为.text
。包含在<pre>
标记内,您已经格式化了代码。
var pre = $("pre").html();
$("pre").text(pre);