2012-03-08 8 views
6

मैं जावास्क्रिप्ट का उपयोग कर रहा हूं और HTML पेड़ को पार करना चाहता हूं, जैसा कि उपयोगकर्ता को दिखाई देता है, सभी टेक्स्ट प्राप्त करना। हालांकि, मैं रिक्ति की जानकारी खो रहा हूँ।जावास्क्रिप्ट डोम, स्पेसिंग जानकारी खोने के बिना नोड टेक्स्ट प्राप्त करें

<html>XXX<p>YY YY</p><html> 

<html>XXX<p>YY&nbsp;&nbsp;&nbsp;YY</p><html> 

पहले एक वाईएस के बीच 1 अंतरिक्ष के साथ दिखाई देगा:

चलो कहते हैं कि मैं दो डॉक्स करते हैं। दूसरे में 3 रिक्त स्थान होंगे। हालांकि, अगर मैं पेड़ पार और, प्रत्येक #text नोड के लिए, का उपयोग करें:

text = node.nodeValue; 

तो दोनों नोड्स के लिए पाठ 3 रिक्त स्थान होगा। मैं अब नहीं जानता कि किसके पास "वास्तविक" रिक्त स्थान हैं। मैं पी तत्वों के लिए node.innerHTML का उपयोग कर सकता हूं, जो दिखाएगा, लेकिन मुझे नहीं लगता कि मैं केवल XXX टेक्स्ट प्राप्त करने के लिए आंतरिक HTML का उपयोग कर सकता हूं (बिना किसी प्रकार के टेक्स्ट घटाव के)।

मैं बस पूरे दस्तावेज़ का आंतरिक HTML प्राप्त कर सकता हूं और उस पर विश्लेषण कर सकता हूं। हालांकि, मैं भी प्रत्येक तत्व है, जो मैं तो

window.getComputedStyle(theElement).getPropertyValue("text-align"); 

का उपयोग कर पाने के लिए जा रहा हूँ की गणना शैली प्राप्त करने की आवश्यकता है, मैं प्रत्येक नोड से गुजरने दिया जाएगा। इसके अलावा, आंतरिक HTML स्रोत को दिखाता है, जबकि नोड्स को "फिक्स" एचटीएमएल त्रुटियों को हल करता है, अंत टैग जोड़ता है, यह एक अच्छी बात है और कुछ मैं रखना चाहता हूं।

+0

दिलचस्प सवाल। क्या आप संदर्भ के लिए अपना वर्तमान ट्रैवर्सल कोड दिखा सकते हैं? –

+0

मैंने एक ऐसा फ़ंक्शन बनाया जिसे मैं पुनरावर्ती रूप से कॉल करता हूं। फ़ंक्शन तत्व का नोडनाम प्राप्त करता है और, यदि यह #text तत्व है, तो nodeValue प्राप्त करता है। प्रत्येक बच्चे (element.childNodes) के लिए यह फ़ंक्शन को कॉल करता है, नाम और मूल्य जानकारी लौटाता है। – user984003

उत्तर

1

यदि आप charCode द्वारा परीक्षण करते हैं तो क्या होगा? मेरा मानना ​​है कि एक नियमित स्थान 32 है, जबकि &nbsp;160 है।

+0

आप सही हैं! मैंने इसका परीक्षण किया और यह काम करता है। तो जानकारी वास्तव में खो नहीं है। यह वही है, जिस तरह से मैंने इसे देखा, वे दोनों रिक्त स्थान के रूप में प्रदर्शित किए गए थे। यह जानकर, मैं शायद जानकारी प्राप्त करने के अन्य तरीकों को भी ढूंढ सकता हूं (उदाहरण के लिए, मेरे पायथन कोड में, फॉर्म में जानकारी भेजने के बाद)। अब मुझे यह भी सोचने की ज़रूरत है कि मुझे कौन से अन्य रूपांतरण करने की ज़रूरत है। मुझे लगता है कि सभी एचटीएमएल इकाइयां, आदि धन्यवाद! – user984003

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