2012-12-26 14 views
5

पर डेटा ट्रांसफर ItemList को स्थानांतरित करें, मैं सिंक्रोनस जेएस फाइलसिस्टम एपीआई का उपयोग करना चाहता हूं, इसलिए, इस कोड को वेबवर्कर में रखना होगा। वेबवर्कर के आने वाले डेटा को फ़ोल्डर्स अपलोड करने के लिए क्रोम नवीनतम कैपेबिलिटी का उपयोग करने में सक्षम होने के लिए ड्रैगड्रॉप इवेंट (डेटाट्रांसफर.इटम्स) से लिया जाता है। दुख की बात है, क्रोम द्वारा "अनकॉट त्रुटि: DATA_CLONE_ERR: DOM अपवाद 25" के साथ हर प्रयास को रद्द कर दिया जाता है।जेएस: WebWorker

मूल रूप से, इस तरह अपनी:

var files=e.dataTransfer.items; [copying the DataTransferItemList] 
    var worker=new Worker(...) 
    worker.postMessage(files); 

यह काम नहीं करता। कोई विचार, क्यों? एक समान (लेकिन 100% समान नहीं) उदाहरण यहां पाया जा सकता है: http://www.html5rocks.com/en/tutorials/file/filesystem-sync/ - ऐसा लगता है कि यह काम करता है। यह DataTransferItemList नहीं है, यह एक फ़ाइलसूची है - इस प्रकार की सूची क्रमबद्ध नहीं हो सकती है?

धन्यवाद, क्रिस्टोफ

+0

देखें http://stackoverflow.com/questions/7506635/uncaught-error-data-clone-err-dom-exception-25-thrown-by-web: तो आप उस सीधे कार्यकर्ता को पोस्ट कर सकते हैं -worker – pd40

+0

यह एक दिलचस्प सवाल है। लेकिन स्टार्टर के लिए, आप ऑब्जेक्ट को अलग-अलग चर में निर्दिष्ट करके कॉपी नहीं करते हैं। यह नियम कचरा कलेक्टर का उपयोग कर सभी भाषाओं पर लागू होता है। और आप वेब वर्कर को केवल एक स्ट्रिंग या बाइट सरणी पोस्ट कर सकते हैं - लेकिन मुझे उम्मीद है कि भविष्य में एक समाधान होगा। –

+0

संभावित डुप्लिकेट [क्या क्रोम एक्सटेंशन में सिंक्रोनस फ़ाइल सिस्टम एपीआई का उपयोग किया जा सकता है] (http://stackoverflow.com/questions/10493337/can-the-synchronous-file-system-api-be-used-in-a -Chrome-विस्तार) –

उत्तर

0

आप event.dataTransfer.files का उपयोग FileList पाने के लिए करना चाहिए।

var files=e.dataTransfer.files || e.target.files; // Cross browser FileList 
var worker=new Worker(...); 
worker.postMessage({files: files});