将javascript显示为代码段

时间:2013-07-19 18:38:44

标签: javascript html css prettify

我要做的是在页面上显示一段javascript,而不是让它运行,只显示为人们要复制的代码片段。我加载谷歌的Prettify,然后在页面中我有这个代码:

    <pre class="prettyprint">
    <script>
    $(document).ready(function(){
      setTimeout(function(){
        console.log('deleting cookie');
        $.cookie('cookie',null,{domain: document.domain});
     },1000);
    });
    </script>
   </pre>

但是这段代码只是执行而不显示JS片段。我在这里缺少什么?

5 个答案:

答案 0 :(得分:14)

您需要将<>字符转换为HTML实体,如下所示:

<pre class="prettyprint">
  &lt;script&gt;
    $(document).ready(function(){
      setTimeout(function(){
        console.log('deleting cookie');
        $.cookie('cookie',null,{domain: document.domain});
      },1000);
    });
  &lt;/script&gt;
</pre>

除了现有的<code>代码之外,我还建议将代码包装在<pre>代码中。

答案 1 :(得分:4)

您遇到的问题是您正在输入HTML,并且您希望它不被视为HTML。具体来说,是开头<script>元素。

为了输入不会被解析为HTML的HTML,您需要编码HTML特有的字符。例如,<编码为&lt;>编码为&gt;&编码为&amp;

因此,要输出以下内容而不将其解析为HTML:

<script>...</script>

...你需要输入:

&lt;script&gt;...&lt;/script&gt;

答案 2 :(得分:2)

由于<script>标记,它正在运行。你应该对它们进行编码:

<pre class="prettyprint">
&lt;script&gt;
$(document).ready(function(){
  setTimeout(function(){
    console.log('deleting cookie');
    $.cookie('cookie',null,{domain: document.domain});
 },1000);
});
&lt;/script&gt;
</pre>

答案 3 :(得分:0)

&lt;script&gt;代码

使用&lt;/script&gt;<script>

答案 4 :(得分:-1)

textContent属性(或createTextNode)完成编码需要插入dom的任何文本的繁重工作:

var sampleCode="<script> $(document).ready(function(){ setTimeout(function(){ console.log('deleting cookie'); $.cookie('cookie',null,{domain: document.domain}); },1000); }); </script>";
var pre=document.createElement("pre");
pre.textContent=sampleCode;
pre.className="prettyprint";
document.body.appendChild(pre);