2011-04-11 10 views
8

के रूप में एचटीएमएल को कैसे सम्मिलित करें, उदाहरण के लिए, <p>, उदाहरण के लिए, <p>, सादे पाठ में दिखाने के लिए, और ब्राउज़र द्वारा वास्तविक टैग के रूप में व्याख्या नहीं किया गया है।टेक्स्ट

मुझे पता है कि JQuery में .html और .text है, लेकिन यह कच्चे जेएस में कैसे किया जाता है?

encodeURIComponent कि %3Cp%3E करने के लिए <p> encodes जैसे कार्यों रहे हैं, लेकिन अगर मैं सिर्फ डाल कि HTML में, यह यह सचमुच की व्याख्या %3Cp%3E के रूप में।

तो वहाँ भी &gt; और &lt; तरह बातें कर रहे हैं, वे काम करते हैं, लेकिन मैं किसी भी जावास्क्रिप्ट कार्यों है कि इस से & unescapes निकल जाता है नहीं मिल रहा।

क्या एचटीएमएल को कच्चे जावास्क्रिप्ट के साथ टेक्स्ट के रूप में दिखाने का कोई सही तरीका है?

+0

मैं व्यक्तिगत रूप से बहिष्कृत लेकिन काम कर रहे टैग [XMP] (https://developer.mozilla.org/en/HTML/Element/xmp) का उपयोग करता हूं: 'document.getElementById ('someDiv')।innerHTML = '

यहाँ कुछ एचटीएमएल

' ' – mplungjan

उत्तर

16

पात्रों से बचने की कोई आवश्यकता नहीं है। सीधे शब्दों में createTextNode का उपयोग करें: http://jsfiddle.net/tZ3Xj/:

var text = document.createTextNode('<p>Stuff</p>'); 
document.body.appendChild(text); 

एक काम उदाहरण देखें।

यह ठीक है कि कैसे jQuery यह करता है (line 43 of jQuery 1.5.2):

return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text)); 
+0

क्या तुम जानते हो क्यों प्रोटोटाइप यह तरीका है कि वे अगर यह (बेहतर की तलाश में) तकनीक काम करता हैं कर रहे होते? – thirtydot

+0

@ थर्डडॉट, क्या डीओएम में टेक्स्ट डालने पर प्रोटोटाइप बच निकलता है या क्या यह सिर्फ एक उपयोगिता फ़ंक्शन है? मैं कल्पना कर सकता हूं कि इसका उपयोग कहीं और करने के लिए है। –

+0

शायद createTextNode खुद से बच रहा है? वैसे भी, यह वह कार्य है जिसकी मुझे आवश्यकता है। धन्यवाद। – foobar

5

प्रोटोटाइप द्वारा इस्तेमाल किया समारोह एक अच्छी शुरुआत की तरह दिखता है:

http://www.prototypejs.org/api/string/escapeHTML

function escapeHTML() { 
    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); 
} 

संस्करण अधिक उपयोग करने के लिए उपयुक्त है प्रोटोटाइप के बाहर:

function escapeHTML(html) { 
    return html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); 
} 
1

यह createTextNode

var target div = document.getElementById('div1'); 
targetDiv.appendChild(document.createTextNode('<p>HelloWorld</p>')); 
1

मैं एचटीएमएल

के पूर्व टैग का उपयोग करने का सुझाव विधि के लिए एक नौकरी है और आप अपने this link

जैसे का उपयोग कर यदि आप कॉपी

<p>Hi </p> 
परिवर्तित कर सकते हैं

यह आपको रूपांतरित कोड देगा ...

&lt;p&gt;Hi &lt;/p&gt; 

बस कॉपी और पूर्व के कोड से ऊपर पेस्ट और यह ठीक काम करेंगे ...

0

आप डोम तत्वों का सबसे से innerText भी है का उपयोग कर सकते हैं:

document.getElementById('some').innerText = "There can be <b> even HTML tags </b>"; 

टैग स्वरूपित नहीं की जाएगी । आप नई लाइन और अधिक कोड (\t, \u2623 ...) के लिए \n का उपयोग कर सकते हैं ...)। यदि आप निश्चित आकार के वर्णों का उपयोग करना चाहते हैं तो आप आसानी से <pre> टैग का उपयोग कर सकते हैं।