2011-12-29 16 views
16

मैं कैनवास के लिए यूआरएल उत्पन्न करने की कोशिश कर रहा हूं। ये कदम उठाएँ मैं पीछा कर रहे हैं:toDataURL कोई फ़ंक्शन नहीं

var can = document.getElementsByTagName("canvas"); 
var src = can.toDataURL("image/png"); 

जब मैं यह एक त्रुटि फेंकता फ़ायरबग पर उपरोक्त कोड चलाने का भी प्रयास:

TypeError: can.toDataURL is not a function 

मैं ubuntu पर फ़ायरफ़ॉक्स 8 चल रहा हूँ।

उत्तर

29

getElementsByTagNameNodeList[docs] देता है, एक तत्व नहीं।

var src = can[0].toDataURL("image/png"); 

आप प्रत्येक कैनवास के लिए डेटा URL प्राप्त करना चाहते हैं, तो आप सूची पर पुनरावृति करने के लिए है:

आप सूची के पहले तत्व का उपयोग। अन्यथा, कैनवास को एक आईडी देना और getElementById के साथ संदर्भ पुनर्प्राप्त करना अधिक सुविधाजनक हो सकता है।

+1

मैन ... मुझे नहीं पता कि मैं इस पर कितनी बार ठोकर खाई हूं ... – robsch

5
var can = document.getElementsByTagName("canvas"); 

यह कैनवास तत्वों की एक श्रृंखला देता है। आपको आईडी द्वारा कैनवास प्राप्त करने की आवश्यकता है।

var can = document.getElementById("canvasId"); 
4

डबल जाँच आप toDataURL() चल रहे हैं कैनवास वस्तु ही है, संदर्भ वस्तु पर नहीं।

1

स्वीकृत उत्तर में कुछ उल्लेख नहीं किया गया है: यहां तक ​​कि आईडी चयनकर्ता का उपयोग करते समय, jQuery की Sizzle एक ऑब्जेक्ट/संग्रह देता है। इसलिए यदि आप jQuery का उपयोग करते समय यह त्रुटि प्राप्त कर रहे हैं, तो तत्व की पहली अनुक्रमणिका तक पहुंचने के लिए [0] परिशिष्ट का उपयोग करें। आप उत्सुक हैं, तो सूचकांक console.dir($('#canvasId));

उदाहरण के लिए का उपयोग करके पता लगाया जा सकता है, इस पूरी तरह से सामान्य चयनकर्ता विफल हो जाएगा:

var src = $('#canvasId').toDataURL("image/png"); 

लेकिन यह एक काम करेगा (अतिरिक्त कोष्ठक नोटिस):

var src = ($('#canvasId')[0]).toDataURL("image/png"); 
संबंधित मुद्दे