2011-12-21 34 views
5

का उपयोग कर एचटीएमएल की सफाई एक एप्लीकेशन में मैं विकसित कर रहा हूं, उपयोगकर्ता अपने पृष्ठ पर एक तत्व संपादित करने के लिए एचटीएमएल को टेक्स्ट बॉक्स में प्रवेश करता है। इस चरण में, उपयोगकर्ता किसी भी प्रकार की सामग्री, यहां तक ​​कि टूटी हुई HTML, और कुछ टेक्स्ट नोड्स भी जोड़ सकता है।जावास्क्रिप्ट

यकीन है कि मैं कुछ हद तक साफ कोड प्राप्त है, मैं इस

var s = document.createElement('div'); 
s.innerHTML = content; 
// loop over each node in s, and if text node is found, wrap in span. 
content = s.innerHTML 

इस स्निपेट के साथ समस्या यह है कि है सामग्री एक <TD>Text</TD> था है, परिणाम मैं Text है, के बाद से वहाँ एक TD नहीं किया जा सकता बनाने के लिए DIV में।

क्या सभी मामलों में वैध सामग्री प्राप्त करने के लिए कोई फिक्स है?

उत्तर

0

सबसे अच्छा समाधान एक सर्वर HTML Tidy चल पेज जो तब 'साफ़' संस्करण वापसी होगी करने के लिए अपने HTML स्ट्रिंग पारित करने के लिए किया जाएगा। मुझे किसी भी मजबूत, क्लाइंट-साइड केवल समाधान के बारे में पता नहीं है, मुझे डर है।

संपादित करें: एक सस्ता समाधान, या यहाँ तक तेज jQuery के साथ डोम ही उपयोग करने के लिए है:

var input='<div><td>foo</td>'; 
var output = $('<div>'+html+'</div>').html(); //=> '<div>foo</div>' 

यह सभी त्रुटियों को साफ नहीं होगा, लेकिन आप के लिए पर्याप्त हो सकता है।

1

डोम का उपयोग कर यह कर के साथ समस्या यह है कि क्या तुम सच में नहीं है पूरी तरह से एचटीएमएल को सही करना चाहते हैं, क्योंकि आप शर्त यह है कि एचटीएमएल एक टुकड़ा होने के लिए अनुमति दी है जोड़ रहे हैं है। आप कुछ विकृत एचटीएमएल को सही करना चाहते हैं, और कुछ नहीं।

Googling थोड़ा इस jQuery प्लगइन ऊपर फेंक दिया: http://www.davidpirek.com/blog/html-beautifier-jquery-plugin

लेकिन मैं यह पुष्टि नहीं कर सकते।

मैं शायद ग्राहम के साथ सहमत हैं और एचटीएमएल साफ सुझाव है के बाद से यह भले ही आप प्रतिक्रिया के लिए इंतजार करना पड़ता है परिपक्व है और तेजी से होगा।

संबंधित मुद्दे