2015-08-10 6 views
7

में DataTransfer.getData से डेटा प्राप्त करने के लिए कैसे मैं एक कोड है। लेकिन जब मैं ईवेंट ड्रैगओवर या ड्रैगेंटर में डेटा प्राप्त करना चाहता हूं, तो डेटा शून्य है।घटना Dragover या Dragenter

element.addEventListener('dragover',function(e){ 
    var a = e.dataTransfer.getData('Text'); 
    console.log(a); 
},false); 

तो, घटना dragover या dragenter में डेटा प्राप्त करने के लिए कैसे

उत्तर

9

आम तौर पर आप dragstart और drop के अलावा अन्य घटनाओं पर इस जानकारी के लिए उपयोग नहीं है। फ़ायरफ़ॉक्स आपको पहुंच प्रदान करता है लेकिन ऐसा लगता है कि यह मानक के खिलाफ है।

ड्रैग और ड्रॉप के दौरान डेटा को स्थानांतरित करने का तरीका data store ऑब्जेक्ट के माध्यम से होता है, जिसमें विभिन्न परिचालनों के लिए आवश्यक सभी जानकारी होती है। लेकिन event के आधार पर आप इस डेटा स्टोर तक पहुंचने के आधार पर इस जानकारी के साथ कुछ प्रतिबंध कर सकते हैं।

एक खींचें डेटा संग्रह मोड है, जो निम्नलिखित में से एक है:

पढ़ें/राइट मोड

dragstart घटना के लिए 3 मोड, कि इस प्रकार परिभाषित कर रहे हैं कर रहे हैं। ड्रैग डेटा स्टोर में नया डेटा जोड़ा जा सकता है।

केवल-पढ़ें मोड

ड्रॉप घटना के लिए। ड्रैग किए गए डेटा का प्रतिनिधित्व करने वाली वस्तुओं की सूची डेटा सहित पढ़ी जा सकती है। कोई नया डेटा जोड़ा नहीं जा सकता है।

सुरक्षित मोड

अन्य सभी घटनाओं के लिए

। ड्रैग डेटा स्टोर ड्रैग किए गए डेटा का प्रतिनिधित्व करने वाले आइटमों की सूची को प्रारूपित किया जा सकता है, लेकिन डेटा स्वयं अनुपलब्ध है और कोई नया डेटा जोड़ा नहीं जा सकता है।

https://html.spec.whatwg.org/multipage/interaction.html#the-drag-data-store

तो dragover पर, डेटा संग्रह संरक्षित मोड में है, इसलिए डेटा उपलब्ध नहीं होना चाहिए। फिर, फ़ायरफ़ॉक्स इसे अलग-अलग लागू करता है, लेकिन आपको किसी भी मामले में इसका भरोसा नहीं करना चाहिए।

ये मोड सुरक्षा कारणों से, इन आंकड़ा अंतरण हस्तांतरण न केवल एक ही पृष्ठ के तत्वों की अनुमति देता है के लिए देखते हैं, लेकिन आदि अन्य अनुप्रयोगों से डेटा, फ़ाइलें, के

+0

यह एक शर्म की बात है यह मामला है है; यह प्लेसहोल्डर्स को चित्रित करता है और यह जानकर कि 'DataTransfer.dropEffect' क्या मुश्किल हो सकता है यदि आपको नहीं पता कि यह क्या खींचा जा रहा है। – Robert

+0

यदि आप ड्रैगस्टार्ट को नियंत्रित करते हैं, तो आपके पास पहुंच है। यदि आप नहीं करते हैं, तो यह आपको समझने के लिए समझ में आता है कि आप क्या जान सकते हैं, अन्यथा आपको उपयोगकर्ता के बारे में जानने के बिना आपके पृष्ठ पर खींचा जा सकता है। –

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