मैं जावास्क्रिप्ट के event.dataTransfer के माध्यम से ड्रैग और ड्रॉप के लिए मूल ऑब्जेक्ट पास करने का एक तरीका जानने का प्रयास कर रहा हूं। मैं एक सीएमएस के फ्रंट एंड एडिटर हिस्से को लिख रहा हूं, और चाहता हूं कि उपयोगकर्ता तत्वों को खींचें और छोड़ सकें (कई अलग-अलग प्रकारों से, फाइलों से छवियों तक लेकर HTML के स्निपेट तक कुछ भी करने के लिए)। यही कारण है कि मैं एक वास्तविक वस्तु को पारित करना चाहता हूं, इसलिए मैं इसे प्रस्तुत करने के तरीके के बारे में जानने के लिए आवश्यक चीजों को निर्दिष्ट करने के लिए डेटा संलग्न कर सकता हूं।डेटा के माध्यम से ऑब्जेक्ट पास करें
एक वर्कअराउंड किसी ऑब्जेक्ट को पृष्ठ पर किसी अन्य चीज़ से अटैच करने के लिए jQuery के .data() का उपयोग करना है, और फिर बस सेटडाटा में चयनकर्ता स्ट्रिंग को पास करें ... लेकिन मुझे विशेष रूप से उस हैक का आनंद नहीं मिलता है।
यह भी साथ हल किया जा सकता jQuery यूआई के खींचने योग्य/droppable (और मैं पूरी तरह से किसी भी लाइब्रेरी का उपयोग कर का विरोध नहीं कर रहा हूँ), लेकिन जब से dropzone एक iframe में है, यह एक वास्तव में नवीनतम jQuery UI में एक प्रलेखित बग है (1.10.2)। इसके अलावा, यदि संभव हो तो मैं इसे मूल रूप से करना पसंद करूंगा। इस ऐप में पहले से ही पर्याप्त पुस्तकालय हैं। http://jsfiddle.net/AHnh8/
var foo = {foo: "foo", bar: "bar"};
$dragme.on("dragstart", function(e) {
e.originalEvent.dataTransfer.setData("foo", foo);
});
$dropzone.on("dragenter", function(e) { e.preventDefault(); });
$dropzone.on("dragover", function(e) { e.preventDefault(); });
$dropzone.on("drop", function(e) {
console.log(e.originalEvent.dataTransfer.getData("foo")); // [Object object]
console.log(typeof e.originalEvent.dataTransfer.getData("foo")); // string
});
अब, चश्मा पढ़ने के बाद, मैं पूरी तरह समझ में क्यों यह विफल रहता है:
यहाँ समस्या है। जो मुझे समझ में नहीं आता है, वही है जो आखिरकार मैं प्राप्त करना चाहता हूं।
धन्यवाद
मैं आप इसे और JSON.parse डेटा प्राप्त करने पर भेजने से पहले डेटा stringify करने की जरूरत है लगता है। – Deee