2011-04-06 18 views
8

ऐसा प्रतीत होता है कि आंतरिक HTML() फ़ंक्शन के माध्यम से सामग्री आउटपुट करते समय जावास्क्रिप्ट कुछ विशेष वर्णों को HTML इकाइयों में परिवर्तित करता है। यह एक समस्या है, क्योंकि मुझे < आउटपुट करने में सक्षम होना चाहिए और> gt में कनवर्ट किए बिना; और लेफ्टिनेंट;जावास्क्रिप्ट - बाहरी स्ट्रिंग के लिए आंतरिक HTML का उपयोग * बिना * HTML- एन्कोडेड विशेष वर्ण?

यह स्वत: रूपांतरण, रोका जा सकता है किया जा उलट, या भाग निकले? अब तक, कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, < और> हमेशा स्वचालित रूप से HTML इकाइयों में एन्कोड किए जाते हैं।

उदाहरण कोड:

function DisplayQueries() { 
    var IDs = ['AllOpenedINC','AllOpenedCRQ','AllClosedINC','AllClosedCRQ','SameDayINC','SameDayCRQ','NotSameDayINC','NotSameDayCRQ', 
     'StillOpenINC','StillOpenCRQ','OpenOldINC','OpenOldCRQ','OtherQueuesINC','OtherQueuesCRQ'] 

    for (var i = 0; i < IDs.length; i++) { 
     if (eval(IDs[i])) 
      document.getElementById(IDs[i]).innerHTML = eval(IDs[i]); 
    } 
} 

उदाहरण क्वेरी चर:

AllOpenedINC = "('Company*+' = \"test\" OR 'Summary*' = \"%test%\") AND ('Submit Date' >= \"" + theDate + 
    " 12:00:00 AM\" AND 'Submit Date' <= \"" + theDate + " 11:59:59 PM\")" + nameINC; 
+0

आप कुछ नमूना कोड पोस्ट कर सकते हैं (और हमें बताएं कि आप किस ब्राउज़र उस में चला रहे हैं)? –

+0

आप टैग (किसी प्रकार की एक्सएमएल) सम्मिलित करना चाहते हैं, तो आप .appendChild ("") का उपयोग कर सकते हैं ;, लेकिन मुझे लगता है कि नहीं है कि आप क्या चाहते है? – Guidhouse

+0

कि यह क्या है के बारे में अधिक जानकारी के लिए, आप मैं document.getElementById करना भले ही ("testdiv") कृपया अच्छी तरह से पूरा करने के लिए – Guidhouse

उत्तर

0

मैं पता लगा क्या हो रहा है। आंतरिक HTML को HTML अक्षरों में परिवर्तित करने से आंतरिक HTML को रोकने का कोई आसान तरीका नहीं है, लेकिन चूंकि समस्या क्लिपबोर्ड पर एक डीआईवी की सामग्री की प्रतिलिपि बनाते समय सामने आई थी (आईई-केवल जेएस का उपयोग करके, जो काम करता है क्योंकि यह एक सरकारी माहौल में है जहां हर किसी के पास है आईई का उपयोग करने के लिए), मैंने बस HTML इकाइयों को फिर से कनवर्ट करने के लिए प्रतिस्थापन() फ़ंक्शन का उपयोग < और> पर किया है।

+0

हाँ, आंतरिक HTML वास्तव में कुछ भी परिवर्तित नहीं कर रहा है। मेरे मामले में यह मूंछ templating था कि सामान परिवर्तित कर रहा था। –

1

मैं आपके सवाल का एक झूठे आधार पर आधारित है लगता है। बस एक बहुत ही साधारण परीक्षण करते हैं:

document.getElementById("testdiv").innerHTML = '<h1><em>Hello</em></h1>'; 

अगर यह ठीक काम करता है तो समस्या जे एस तरफ नहीं है, बजाय आप जो अपने पात्रों एचटीएमएल-सांकेतिक शब्दों में बदलना आपके सिस्टम में कुछ अन्य घटकों का उपयोग करें।

+0

चाहते हैं, innerHTML = '< test >'। यह अभी भी < and > HTML इकाइयों के रूप में एन्कोड करता है। ऐसा लगता है जैसे यह केवल वास्तविक एचटीएमएल टैग के लिए छोड़ देता है, शायद ..? – ClairelyClaire

+0

@shifuimam यह संभव है कि आपकी स्ट्रिंग सीधे HTML पार्सर को पास कर दी गई हो और वे वर्ण जिन्हें कानूनी HTML के रूप में व्याख्या नहीं किया गया हो। - यदि आप दस्तावेज़ में टूटी हुई HTML डालना चाहते हैं तो यह केवल एक समस्या है। क्या मैं आपसे पूछ सकता हूं कि इसके साथ आपका उद्देश्य क्या है? शायद हम अन्य समाधान का प्रस्ताव दे सकते हैं। - आप इसे अपने प्रारंभिक प्रश्न में जोड़ सकते हैं। – vbence

+0

मैंने उस पाठ का एक उदाहरण जोड़ा जो मैं अपने मूल प्रश्न में आउटपुट कर रहा हूं। पाठ एक क्वेरी है जो <= and > = जैसे ऑपरेटरों का उपयोग करती है .. यह उन प्रतीकों को है जो इकाइयों में स्वत: रूपांतरित हो रही हैं। – ClairelyClaire

1

आप आप क्या बल्कि यह ऐसा करने का तरीका की तुलना में एक परिणाम के रूप में पूरा करने के लिए, चाहते हैं पर ध्यान देना चाहिए। आंतरिक HTML() एन्कोड करता है, innerText() और textContent() एन्कोडिंग भी करता है। इसलिए यदि आप उन्हें < या> वापस चाहते हैं तो आपको अपने तारों को डीकोड करना चाहिए।

आप के रूप में आप चाहते हैं उन्हें अपने परिणामों को प्राप्त करने के लिए इस unescapeHTML() फ़ंक्शन का उपयोग कर सकते हैं।

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

मुझे उम्मीद है कि इससे मदद मिलती है। मैंने इसे प्रोटोटाइप से कॉपी किया है।

+0

मैं वास्तव में, वास्तव में एक फ़ंक्शन के लिए जेएस फ्रेमवर्क का उपयोग नहीं करना चाहता हूं। क्या कोई मैन्युअल फ़ंक्शन है जो स्ट्रिपटैग() करता है? – ClairelyClaire

+0

आपको ढांचे का उपयोग करने की ज़रूरत नहीं है। आप फ्रेमवर्क का उपयोग किए बिना इस फ़ंक्शन का उपयोग कर सकते हैं। मैंने इसे आपके लिए ढांचे से कॉपी किया है। इसे अपने टैग के अंदर शामिल करें। – celiker

-2

आप jquery उपयोग कर सकते हैं और .append()

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