如何在HTML代码中禁用脚本&仍然显示他们?

时间:2012-08-31 18:17:03

标签: javascript html html5 tags

有哪些方法可用于显示[在html中]涉及脚本标记和代码段的代码段。同时阻止浏览器执行该脚本代码?

5 个答案:

答案 0 :(得分:5)

对所有<>字符进行编码,以便最终得到

<div>
   <h2>Here's some JS code</h2>

   <pre>
      &lt;script type="text/javascript"&gt;
         var x = 7;
         var y = 10;
         if (x &lt; y) {
            alert('this alert will not fire!');
         }
      &lt;/script&gt;
    </pre>
</div>

答案 1 :(得分:2)

你需要像这样转义特殊的html相关字符:

  <body>
    <p>&lt;script type="text/javascript" &gt;</p>
    <p>alert("hello world!");</p>
    <p>&lt;/script&gt;<br />
    </p>
  </body>

有关完整列表,请参阅:http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php

答案 2 :(得分:1)

对所有HTML实体(&lt;,&gt;,&amp; etc)进行编码,并将所有内容包装在预标签中以保留格式。

<pre>
  &lt;script type="text/javascript"&gt;
    alert('test');
  &lt;/script&gt;
</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>允许的更精彩地呈现它,并且有像beautyOfCodegoogle-code-prettify那样的库来完成繁重的工作对你而言。

答案 4 :(得分:0)

说实话,我不确定这是否是一个很好的方法,所以如果不是,我希望有人会告诉我。

如果您不想通过转换器运行代码,可以使用此jQuery函数将元素的.html显示为.text。包含在<pre>标记内,您已经格式化了代码。

var pre = $("pre").html();
$("pre").text(pre);​

http://jsfiddle.net/charlescarver/hqh8q/1/