2

有哪些方法可以用来显示 [in html] 涉及脚本标签的代码段,同时防止浏览器执行该脚本代码?

4

5 回答 5

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>
于 2012-08-31T18:19:36.833 回答
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

于 2012-08-31T18:26:17.167 回答
1

编码所有 HTML 实体( < 、 > 、 & 等)并将所有内容包装在 pre 标记中以保持您的格式。

<pre>
  &lt;script type="text/javascript"&gt;
    alert('test');
  &lt;/script&gt;
</pre>

一个方便的转换器: http ://www.rishida.net/tools/conversion/

于 2012-08-31T18:30:02.200 回答
1

早在 HTML2 时代,就有了<xmp><listing>元素,这正是:你可以做到。例如

<xmp>Because this is HTML2, there isn't a <script> tag to worry about anyway.</xmp>

</xmp>它会将标签显示为内容,而不是将它们解释为元素的开始和结束(但由于显而易见的原因,你不能这样做)。

然而,对于浏览器作者和网络作者来说,拥有这种能力实际上带来的问题远远多于他们所帮助的问题。因此,它们在 HTML3.2 中被弃用(或者可以说是 HTML3,但这不是 HTML3 的唯一参数 - 另一个就是上面带有“HTML3”的文档才是重要的......),并用 HTML4 删除。

因此,唯一要做的就是逃避它。

<pre>有助于格式化,虽然我经常只是做一个查找替换来用不间断的空间交换每个空间。

完成后,您可以比以往任何时候都更漂亮地渲染它,<xmp> 并且<listing>有诸如beautyOfCodegoogle-code-prettify之类的库可以为您完成繁重的工作。

于 2012-08-31T18:43:58.587 回答
0

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

如果您不想通过转换器运行代码,可以使用此 jQuery 函数将.html元素的.text. 包裹在<pre>标签内,你有格式化的代码。

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

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

于 2012-08-31T18:58:28.077 回答