2012-01-21 9 views
5

मुझे कैनवास तत्व में कोई समस्या है। यह तब दिखाया नहीं जाता है जब यह एक छिपे हुए div में होता है और div को टॉगल किया जाता है। बेहतर विवरण और उदाहरण यहाँडिस्प्ले के साथ एक div में कैनवास कोई भी काम नहीं करता

http://jsfiddle.net/78sJT/10/

यह क्या हो रहा है एफएफ और क्रोम (परीक्षण नहीं अन्य) में। क्या कोई मुझे बता सकता है कि इस मुद्दे को कैसे दूर किया जाए।

उत्तर

2

समस्या यह है कि डिग्राफ div की चौड़ाई/ऊंचाई 0/0 के रूप में पहचानता है और इसे फिर से खींचा जाने तक अन्यथा नहीं सीखता है (कोई भी जेएस घटना नहीं होती है जो एक व्यक्तिगत डोम तत्व का आकार बदलता है)।

सबसे आसान तरीके को सिर्फ़ स्पष्ट dygraph पता है कि यह अपने आकार को अपडेट करना चाहिए और खुद को पुनः बनाने के बाद div का उपयोग कर चालू किए जाने पर जाने के लिए g.resize();

$(document).ready(function(){ 
     $('.click').click(function(){ 
     $('#hidden').toggle(); 
     g.resize(); 
     }); 
    }); 

मैं अद्यतन अपने jsfiddle http://jsfiddle.net/78sJT/13/

+0

धन्यवाद, यह मुझे पागल कर रहा है। मुझे बस ऐसा करने का एक तरीका पता चलाना होगा क्योंकि मैं चार्ट को गतिशील रूप से उत्पन्न कर रहा हूं और यह नहीं जानता कि वास्तव में "जी" क्या है। – dogmatic69

+1

यह काम कर रहा है, किसी और के लिए जो गतिशील रूप से ऐसा करने के लिए देख रहा है मैं HTML5 डेटा विशेषताओं का उपयोग कर रहा हूं और http://codepad.org/CmHHo0iG के साथ समाप्त हुआ – dogmatic69

1

मैं सिर्फ यह मारा है ओपी के प्रश्न में वर्णित समस्या से मेल खाते क्रोम 37.0.2062.124 मीटर में समस्या। हालांकि मैं किसी विशेष ग्राफिंग लाइब्रेरी का उपयोग नहीं कर रहा हूं, बस कैनवास पर चित्रित कर रहा हूं। और जब मैं संलग्न डीवी आकार बदल गया था तब मैं पहले से ही कैनवास को फिर से चित्रित कर रहा था।

मुझे लगता है कि यदि कैनवास की चौड़ाई या ऊंचाई शून्य पर सेट हो जाती है, तो यह अविश्वसनीय हो जाती है। अगली बार जब आप चौड़ाई और ऊंचाई को गैर-शून्य मानों पर सेट करते हैं, तो आप जिस भी ड्राइंग पर करते हैं उसे तुरंत अनदेखा कर दिया जाएगा, भले ही इसकी चौड़ाई और ऊंचाई अब शून्य न हो और इसे तत्व पेड़ में देखा जा सके (और होवर- पृष्ठ में हाइलाइट किया गया) क्रोम के डीबगर में।

तो benni_mac_b के जवाब में सलाह के अलावा आप या तो:

  • उपयोग setTimeout या कैनवास पर ड्राइंग देरी करने के लिए है, तो आप इसे तुरंत चौड़ाई/ऊंचाई निर्धारित करने के बाद ऐसा नहीं करते हैं, या
  • समान
  • सुनिश्चित करें कि आपने कभी भी कैनवास को शून्य चौड़ाई/ऊंचाई पर सेट नहीं किया है। सुनिश्चित करें कि यह कम से कम 1 पिक्सेल है।

मैं बाद में सादगी के लिए करता हूं और यह समस्या हल करता है।

सारांश में:

एक कैनवास है कि बस के लिए (1000, 1000) (0, 0) से बड़ा हो गया है तुरंत पर तैयार नहीं किया जा सकता - यह सब ड्राइंग निर्देश पर ध्यान नहीं देता। लेकिन अगर यह अभी (1, 1) से (1000, 1000) तक उगाया गया है तो आप तुरंत इसे सब पर आकर्षित कर सकते हैं।

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