2013-05-30 3 views
5

मैं कोड का उपयोग करके बाउंडिंग बॉक्स की चौड़ाई हो रही है:स्केलेबल वेक्टर ग्राफिक्स (एसवीजी): getBBox() इंटरनेट एक्सप्लोरर में काम नहीं कर 10

document.getElementById("dataId").getBBox().width; 

यह मैं सीमांकन बॉक्स की चौड़ाई वापस आ जाएगी दर्ज आईडी के साथ। यह सभी ब्राउज़रों (क्रोम, फ़ायरफ़ॉक्स 21, आई 7) में ठीक काम कर रहा है लेकिन आईई 10 में नहीं। आईई 10 में, यह मुझे 0

का मान लौटा रहा है यह उदाहरण मैंने जेएसफ़िल्ड में बनाया है। कृपया इसे जांचें। http://jsfiddle.net/L82rn/

मैं उत्सुक हूं कि आईई 10 और एसवीजी getBBox विधि के बीच कोई संगतता समस्या है, तो कृपया मुझे बताएं कि इस पर कोई समस्या है या नहीं।

+0

आपको अपने पहेली में एक त्रुटि है, आपने 'svgns' को परिभाषित नहीं किया है। उस त्रुटि को ठीक करने के साथ, मैं दुर्भाग्य से केवल पुष्टि कर सकता हूं कि आईई 10 की मेरी स्थापना '' '' के लिए उचित बाउंडिंग बॉक्स की रिपोर्ट नहीं कर रही है। हालांकि, पाठ तत्व के बाध्यकारी बॉक्स के लिए पूछना ही उम्मीद के अनुसार काम करता है। शायद यह आपको एक कामकाज की पेशकश कर सकता है? –

+0

वास्तव में मैं IE9 + पर .getBBox का उपयोग कर अनुप्रयोग चला रहा हूं और सभी गणना ठीक काम करने लगती है। – BausTheBig

उत्तर

1

this thread में कल्पना से उद्धृत मुझे लगता है कि इस

ध्यान दें कि getBBox समय विधि बुलाया गया था पर वास्तविक सीमांकन बॉक्स लौटना चाहिए, यहां तक ​​कि इस मामले में अभी तक तत्व प्रदान नहीं किया गया है है।

"जिस मामले में तत्व अभी तक प्रस्तुत नहीं किया गया है" आईई के लिए चिपकने वाला बिंदु प्रतीत होता है, यह समस्या एक साल बाद आईई 11 पर बनी हुई है। एकमात्र अन्य संभावना है कि मैं अनुभव से बाहर देख सकता हूं कि जी टैग के साथ spec के अनुसार स्पष्ट चौड़ाई और ऊंचाई नहीं है, IE केवल इस चेक को पूरी तरह से पूर्ववत कर सकता है, जैसा कि "चौड़ाई नहीं है" जैसा संभवतः वही है आईई कोडबेस के लिए 0।

तो काम करने के दौरान सबसे बड़ा बच्चा देखने के लिए कामकाज होगा। आपके विशेष मामले में वर्कअराउंड के रूप में आप lastChild को पकड़ सकते हैं जब आप इसे जी टैग में जोड़ते हैं। जेएस कोड को पहेली में बदलें (मैंने टिप्पणियों में थॉमस डब्ल्यू द्वारा उल्लिखित svgns चीज को भी ठीक किया है)।

var temp; 
temp = document.createElementNS("http://www.w3.org/2000/svg","text"); 
temp.appendChild(document.createTextNode("..")); 
temp.setAttribute("x",38); 
temp.setAttribute("y",18); 
document.getElementById("tata").appendChild(temp); 
alert(document.getElementById("tata").lastChild.getBBox().width); 

आप यह सिर्फ अंतिम पंक्ति मैं getBBox() से पहले lastChild में धकेल कर बदल दिया गया है देख सकते हैं, 8 के बजाय एक 0 के एक अब सचेत फ़ायरफ़ॉक्स और अन्य ब्राउज़रों किया था चाहिए।

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