2009-11-25 3 views
5

मुझे निम्न समस्या का सामना करना पड़ रहा है: मेरे पास एक HTML दस्तावेज़ है जहां मैं मूल स्थिति/डीबग/आदि संदेशों को मुद्रित करना चाहता हूं।आईई में पूर्व तत्व में आंतरिक HTML के साथ नई लाइन ( n) डालें काम नहीं कर रहा है?

var out_div; 

    function init() { 
     out_div = document.getElementById('out') 
     return 1; 
    } 

तब:

<body onload='init() && main();'> 

<pre id='out'> 
</pre> 

</body> 
</html> 

init() फ़ंक्शन पूर्व तत्व एक चर करने के लिए प्रदान करती है:

तो, HTML दस्तावेज़ एक खाली पूर्व तत्व जिसका आईडी है बाहर होता है , प्री-डिव में कुछ प्रिंट करने के लिए, मैं इस फ़ंक्शन का उपयोग करता हूं:

function txt_out(txt) { 
     out_div.innerHTML += "\n" + txt 
    } 

नई लाइन को यह सुनिश्चित करना चाहिए कि txt_out का प्रत्येक आमंत्रण अपनी लाइन पर लिखा गया हो। यह फ़ायरफ़ॉक्स में अपेक्षित के रूप में काम करता है। आईई हालांकि \ N पर ध्यान देना प्रतीत नहीं होता है। तो, क्या यह आईई के हिस्से पर गलत है, या क्या मैं कुछ गलत कर रहा हूं?

+4

सिर्फ
eak यह – Amarghosh

+1

हाँ, यह IE की ओर से गलत है। आंतरिक HTML सेटिंग करते समय आईई स्ट्रिप्स अग्रणी व्हाइटस्पेस: http://bytes.inso.cc/wp/2009/11/07/internet-explorer-strips-leading-whitespaces-in-text-nodes/ लाइब्रेरीज़ इसे कम करने में मदद कर सकते हैं (jQuery I पता है कि यह '.html()' विधि के साथ है)। –

+4

संदेह में, आईई गलत है। –

उत्तर

11

को बदलें यह Internet Explorer में किसी known problem है। एक वर्कअराउंड के रूप में, एक न्यूलाइन चरित्र के बजाय <br> तत्व डालें।

+0

बिल्कुल। अच्छा लिंक –

+0

@ बालुससी - पूर्व तत्व ** ** में ** सीडीएटीए नहीं है, और बी बहिष्कृत बाल तत्वों की सूची में नहीं है (http://www.w3.org/TR/html4/struct/text.html#h-9.3 .4)। आपको क्यों लगता है कि एक ब्र तत्व काम नहीं करेगा? – Quentin

1

करने के लिए अपने कोड में परिवर्तित करें:

function txt_out(txt) { 
     out_div.innerHTML += "<br />" + txt 
    } 
3

element.innerHtml += something; जैसी चीजें करना आमतौर पर एक खराब अभ्यास है क्योंकि यह ब्राउज़र को तत्व की संपूर्ण सामग्री को फिर से पार्स बनाता है। जैसे ही आप अधिक से अधिक डेटा जोड़ते हैं, हर बार यह धीमा और धीमा हो जाता है। यह किसी भी संदर्भ/घटना श्रोताओं को भी अमान्य करता है कि कोड के अन्य टुकड़े इसके उप-तत्वों पर हो सकते हैं।

div टैग का बेहतर उपयोग करें; की तरह कुछ:

<div id='out'></div> 

और फिर मक्खी पर नए उप तत्वों संलग्न:

out_div = document.getElementById('out'); 

// add a new message 
new_element = document.createElement('div'); 
new_element.textContent = "your message here"; 
new_element.className = "some_class"; // CSS class for changing the appearance 
out_div.appendChild(new_element); 
+0

ओह! मेरे उत्तर में फिक्स्ड जावास्क्रिप्ट त्रुटियां। – intgr

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