7

मैं अपने एएसपी.नेट वेब ऐप में आकृतियों को चित्रित करने पर काम कर रहा हूं। आईई 9 और अन्य ब्राउज़रों में, मैं इसे एसवीजी के साथ कर रहा हूं, और यह बहुत अच्छा काम कर रहा है। आईई 8 और नीचे में, मैं वीएमएल का उपयोग कर रहा हूं। मुझे लगता है कि आईई 8 वीएमएल को आईई 8 मानक मोड में नहीं दिखाता है (संगतता दृश्य का उपयोग नहीं कर रहा है)।आईई 9, आईई 8, एसवीजी, वीएमएल और डॉक्टरेट

मेरा डॉक्टरेट <!DOCTYPE html> पर सेट है। अगर मैं पूरी तरह से डॉक्टरेट ले जाता हूं, आईई 8 क्विर्क मोड में जाता है और ठीक काम करता है, लेकिन आईई 9 0 पर क्विर्क मोड (आईई 9 मानकों के बजाए) जाता है और एसवीजी प्रदर्शित नहीं करता है।

यह एक परीक्षण पृष्ठ पर हो रहा है, इसलिए वहां कोई भी भाग नहीं है जिसमें एक div युक्त <svg> तत्व और उसके बच्चे या वीएमएल तत्व शामिल हैं।

यहां क्या हो रहा है? ऐसा लगता है कि मुझे अलग-अलग ब्राउज़रों के लिए डक्ट टाइप बदलने की ज़रूरत नहीं है, और स्टैक एक्सचेंज के उपयोगकर्ता पेज पर प्रतिष्ठा ग्राफ उसी तरह काम करता है (आईई 8 और नीचे के लिए वीएमएल, हर किसी के लिए एसवीजी, एचटीएमएल 5 डॉक्टरेट) ...

+0

क्या आपने डॉक्ट टाइप पर शर्त कथन का उपयोग करने के बारे में सोचा है? ' 'मुझे पता है कि यह आपकी पूछताछ नहीं है, लेकिन यह एक वैकल्पिक समाधान हो सकता है। – Eruant

उत्तर

3

IE8 मानक मोड में VML नाम स्थान घोषित करने के लिए, यदि आप किसी तृतीय '#default#VML' argument दर्ज करनी होगी:

document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML'); 

वहाँ IE8 में VML है कि आप के बारे में पता होना करने के लिए आवश्यकता हो सकती है के लिए other changes हैं। व्यवहार के नियमों के लिए

चयनकर्ता संशोधित करने की आवश्यकता:

+0

मैं वास्तव में सबकुछ काम करने के लिए आईई 7 मानक मोड को मजबूर करने के बारे में अपने सुझाव का उपयोग कर रहा हूं। यदि यह IE8 है, तो 'Response.AppendHeader ("X-UA-compatible", "IE = EmulateIE7"); ' –

5

अधिक चीजों की एक जोड़ी की जांच करनी है कर रहे हैं।

  • तत्व के आयाम या स्थिति को सेट करते समय, इकाई पीएक्स के लिए डिफ़ॉल्ट नहीं है। यह काम करने के लिए स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए।
  • आप डोम के बाहर एक VML तत्व नहीं बना सकते:

var vmlFrag = document.createDocumentFragment(); 
vmlFrag.insertAdjacentHTML('beforeEnd', 
'<v:rect id="aRect" fillcolor="red"   
style="top:15px;left:20px;width:50px;height:30px;position:absolute;"></v:rect>' 
); 
document.body.appendChild(vmlFrag); 
  • रेक्ट तत्व प्रदर्शित नहीं किया जाएगा! आप अपने सीएसएस को संशोधित नहीं कर सकते हैं क्योंकि आप शायद ब्राउज़र को क्रैश करेंगे। हालांकि, इसके लिए एक फिक्स है। तत्व के बाहरी HTML को स्वयं में कॉपी करें:

var aRect = document.getElementById('aRect'); 
aRect.outerHTML = aRect.outerHTML; 
1

HighCharts स्रोत कोड एक समाधान दे दी है। कार्यावधि में नाम स्थान जोड़ने के अलावा, आप भी एक विशिष्ट सीएसएस व्यवहार जोड़ने के लिए:

<!--[if lte IE 8 ]> 
<script type="text/javascript"> 
    document.namespaces.add('vml', 'urn:schemas-microsoft-com:vml'); 
    document.createStyleSheet().cssText = 
     'vml\\:fill, vml\\:path, vml\\:shape, vml\\:stroke' + 
     '{ behavior:url(#default#VML); display: inline-block; } '; 
</script> 
<![endif]--> 

उसके बाद, बनाया तत्वों js पृष्ठ पर दिखाई जाएगी। Watch the demo

+0

धन्यवाद आपका समाधान मेरे लिए काम करता है .. – SivaRajini