2013-01-16 14 views
6

पृष्ठभूमि - सीएमएस घर में एक उद्यम बड़े मीडिया साइट के पीछे के लिए TinyMCE द्वारा संचालित एक लेख संपादक में/एसजावास्क्रिप्ट प्रसंस्करण के बिना मूल डोम तत्व innerHTML प्राप्त

एचटीएमएल

<p>non-breaking-space: &nbsp; pound: &pound; copyright: &copy;</p> 

जे एस

console.log($('p').html()); 
console.log(document.getElementsByTagName('p').item(0).innerHTML); 

दोनों वापसी

non-breaking-space: &nbsp; pound: £ copyright: © 

जब मैं

non-breaking-space: &nbsp; pound: &pound; copyright: &copy; 

उम्मीद कर रहा हूँ कुछ तत्वों उनकी संस्थाओं उलट (पौंड और कॉपीराइट) प्राप्त करने, और कुछ (नॉन-ब्रेकिंग स्पेस) संरक्षित कर रहे हैं। मुझे मूल आंतरिक HTML प्राप्त करने का एक तरीका चाहिए, सभी संरक्षित, ब्राउज़र द्वारा संसाधित नहीं किया गया है; क्या यह संभव है?

यह एक TinyMCE प्लगइन के लिए है जो jQuery का उपयोग करके इनपुट को संसाधित करता है और इसे वापस रखता है। सामग्री डेटाबेस के माध्यम से लोड की जाती है, प्लगइन प्रसंस्करण कर रहा है छवि टैग टेक्स्ट सामग्री को संशोधित नहीं करना चाहता था। कुछ संस्थाओं वापस कच्चे अक्षरों तक का स्वत: परिवर्तन एक समस्या की बहुत अधिक नहीं होगा, लेकिन -

  • हम संपादकीय के इनपुट संशोधित नहीं कर सकते, भले ही वह नाबालिग थे
  • हम लागू है कि इन संस्थाओं में होना चाहिए इससे पहले कि वे हमारे साइटों पर कुछ ब्राउज़र संगतता मुद्दों की वजह से बचाने

मैं इस उत्तर का प्रयोग करेंगे - https://stackoverflow.com/a/4404544/830171 - लेकिन नहीं कर सकते हैं के रूप में अपने एचटीएमएल कोड एक पाठ क्षेत्र है कि उपयोगकर्ता को संपादित करने की जरूरत है के भीतर और है कि मैं jQuery डोम चलाने की आवश्यकता है मैनिपुलेशन (प्लगइन के माध्यम से)।

एक तरीका जिस तरह से मैं सोच सकता हूं कि छवि टैग को संसाधित करने के लिए jQuery/DOM का उपयोग नहीं करना है, लेकिन मुझे TinyMCE प्लगइन की तरह regex का उपयोग करने के लिए उपयोग करना है; लेकिन जब से मुझे HTML पर किसी भी regex के प्रयास के लिए regex to pull all attributes out of all meta tags में गोली मार दी गई थी, तो बेहतर तरीके से उम्मीद कर रहा था!

+1

एक 'इस तरह के पाठ के साथ एक तत्व की console.dir' संस्थाओं संरक्षित के साथ किसी भी गुण प्रदर्शित नहीं करता है:

शुद्ध संपादक सामग्री प्राप्त करने के लिए निम्न कोड का प्रयोग करें। यहां तक ​​कि डीबगर (क्रोम में) सभी तत्वों के एचटीएमएल को बिना संरक्षित संस्थाओं के दिखाता है, इसलिए मुझे लगता है कि आप भाग्य से बाहर हैं। – pimvdb

उत्तर

1

टिनिमस सामग्री को संपादित करने के लिए एक सामग्री योग्य आईफ़्रेम का उपयोग करता है। यही कारण है कि console.log($('p').html()); कुछ और लॉग करेगा।

tinymce.get('your_editor_id').getBody().innerHTML 
+0

मैं प्रश्न के TinyMCE भाग पर बहुत अधिक ध्यान केंद्रित नहीं करता हूं, लेकिन सामान्य रूप से यह मूल HTML को वापस कैसे प्राप्त करें, यहां TinyMCE प्लगइन के लिए विशिष्ट समस्या दिखाई देती है - 'ed.onPostProcess.add ( \t फ़ंक्शन (ईडी, ओ) \t { \t \t console.log (o.content); // आउटपुट £ \t \t console.log ($ ('<छोटे-mce-अस्थायी>' + o.content + ' ')। html()); // आउटपुट £ ' – gingerCodeNinja

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