2009-10-23 11 views
5

मैं गतिशील एक्स कैनवस तत्वों को एक पृष्ठ पर jQuery के माध्यम से ऐसा तरह द्वारा जोड़ा जा रहा:कैनवास हेरफेर के लिए तैयार होने पर कैसे पता लगाया जाए?

$(document).ready(function() { 
    for(i=0;i<4;i++) { 
     var can = $(document.createElement("canvas")) 
        .attr("id","table"+i) 
        .addClass("table") 
        .attr("width",640) 
        .attr("height",480) 
        .appendTo('#container'); 
    } 

    //... 
}); 

न तो .append() और न ही .appendTo(), एक कॉलबैक है क्योंकि वे तुरंत होने की अपेक्षा की जाती रहे हैं। दुर्भाग्यवश, कैनवास तत्व के बारे में कुछ तुरंत नहीं होता है।

जब मैं कैनवास तत्वों में से एक पर .getContext('2d') पर जाता हूं तो यह "getContext एक फ़ंक्शन नहीं है" के साथ विफल हो जाएगा। यह एफएफ 3.5 के साथ ही क्रोम पर होता है।

यदि मैं कैनवास तत्वों को .click() जैसे कैनवास तत्वों को सौंपता हूं और मनमाने ढंग से ईवेंट हैंडलर करता हूं, और उस घटना में .getContext() का उपयोग करता हूं, तो यह पूरी तरह से काम करता है।

मैं कुशलता से यह कैसे निर्धारित कर सकता हूं कि एक कैनवास हेरफेर के लिए तैयार है?

उत्तर

5

मुझे नहीं लगता कि आप चर पर getContext() का उपयोग कर सकते हैं।

यदि आप ऐसा कर रहे हैं, तो can[0].getContext() आज़माएं। यह वास्तव में तत्व वस्तु प्राप्त करेगा, jQuery की नहीं।

+0

डी ओह, स्पष्ट गलती! वह था। मेरे पास पहले संस्करण था जहां मैंने दस्तावेज़ को लपेटा नहीं था jQuery में .createElement, और जब मैंने किया तो क्षतिपूर्ति करना भूल गया। –

0

सबसे पहले, मैं देखता हूं कि ब्राउज़र पर किसी भी बग रिपोर्ट में है या नहीं।

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

+0

(यह स्वीकार्य रूप से बदसूरत है और यह सब कुशल नहीं है, लेकिन उपयोग करने के लिए कुछ बेहतर नहीं हो सकता है। :() – Kev

0

आप कैनवास की DOMReady ईवेंट में कोई फ़ंक्शन संलग्न कर सकते हैं।

+0

ओह, यह अच्छा लगता है। मुझे उम्मीद है कि यह काम करता है। – Kev

+0

मैं इसके बारे में jQuery के साथ कैसे जाऊं? $ (canvaselement) .ready (function() {}); वास्तव में ट्रिगर्स, लेकिन getContext अभी भी उपलब्ध नहीं है। –

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