2013-07-19 8 views
8

Was ich versuche ist, ein Schnipsel von Javascript auf der Seite anzuzeigen, und nicht ausgeführt, nur als Code-Snippet für Leute zu kopieren. Ich lade Google Prettify, dann in der Seite, die ich diesen Code habe:JavaScript als Code-Snippet anzeigen

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

Aber dieser Code ausgeführt gerade und nicht den JS-Schnipsel nicht angezeigt. Was fehlt mir hier?

+1

Versuchen Sie, die Quelle HTML dieser Frage, das würde Sie in eine Richtung zeigen. –

+0

10 Haha guten Ruf .. –

Antwort

12

Sie benötigen < und > Zeichen in HTML-Entitäten zu konvertieren, wie so:

<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> 

ich auch den Code in <code> Tags zusätzlich zu den bestehenden <pre> Tags Einwickeln empfehlen würde.

1

Es läuft wegen der <script> Tags.

<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> 
0

Verwendung &lt;script&gt; und &lt;/script&gt; für <script> Tag

4

Das Problem, das Sie haben, ist, dass Sie HTML eingeben und Sie wollen es nicht als HTML behandelt werden: Sie sollten sie kodieren. Genauer gesagt, das Öffnen <script> Element.

Um HTML einzugeben, das nicht als HTML geparst wird, müssen Sie Zeichen kodieren, die speziell für HTML sind. Zum Beispiel ist < kodiert als &lt;, > ist codiert als &gt; und & ist codiert als &amp;.

Also, folgende, ohne es zur Ausgabe als HTML analysiert werden:

<script>...</script> 

... Sie eingeben müssen:

&lt;script&gt;...&lt;/script&gt; 
-1

die textContent Eigenschaft sei (oder createTextNode) alles tun, die schweres Heben von Codierung, was auch immer Text Sie in Dom einfügen müssen:

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);