2013-07-19 12 views
8

Yapmaya çalıştığım şey, sayfada bir javascript snippet'ini göstermesi ve çalıştırmaması, yalnızca kullanıcıların kopyalaması için bir kod snippet'i olarak gösterilmesidir.javascript'i kod snippet'i olarak göster

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

Ama bu kod sadece yürütür ve JS parça göstermeye değildir: Sonra sayfasında bu kodu var, google'ın prettify yükleyin. Burada neyi özlüyorum?

+1

görüntülemeyi deneyin Bu sorunun kaynak HTML'si, size bir yol gösterecek. –

+0

İyi çağrılar .. –

cevap

12

Öyle gibi HTML öğeleri sizin < ve > karakterleri dönüştürmek gerekir:

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

Ben de mevcut <pre> etiketleri ek olarak <code> etiketleri kod sarma öneriyoruz.

1

<script> etiketleri nedeniyle çalışıyor. Sahip olduğunuz sorun HTML girmekte olmasıdır <script> etiketi

0

kullanımını &lt;script&gt; ve &lt;/script&gt; ve bunu HTML olarak ele alınmaması istiyorum: Bunları kodlamak gerekir. Özellikle, açılış <script> öğesi.

HTML olarak ayrıştırılmayacak HTML girmek için HTML'ye özel karakterleri kodlamanız gerekir. Örneğin <, &lt; olarak kodlanır, >, &gt; olarak kodlanır ve &, &amp; olarak kodlanır.

Yani, çıkışa onsuz şu HTML olarak ayrıştırılmıyordur: geleni

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

için

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

(createTextNode ya) textContent özelliği edelim:

<script>...</script> 

... girmeniz gerekiyor Eğer dom eklemek için ne gerekiyorsa metin kodlama ağır kaldırma:

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); 
İlgili konular