मैं व्यूपोर्ट पर एक div ओवरले करना चाहता हूं जब उपयोगकर्ता विंडो पर फ़ाइल खींचता है।इवेंट प्रचार, ओवरले और ड्रैग-एंड-ड्रॉप इवेंट
हालांकि, मुझे घटना प्रसार के साथ परेशानी हो रही है। जब मैं ओवरले को display: block
पर सेट करता हूं तो यह dragleave
ईवेंट और फिर dragenter
और फिर एक और dragleave
फिर से आग लग रहा है, इसलिए यह हमेशा एक पोस्ट-ड्रैगलेव स्थिति में होता है। बेशक मैं ईवेंट ऑब्जेक्ट पर e.stopPropagation()
और e.preventDefault()
पर कॉल करता हूं, लेकिन ऐसा कोई फर्क नहीं पड़ता है।
console.log() उत्पादन जब तुम खिड़की पर कुछ खींचें:
dragenter
dragenter
dragleave
dragenter
dragleave
सीएसएस। #overlay
display: none
डिफ़ॉल्ट रूप से करने के लिए सेट कर दिया जाता है, लेकिन अगर body
dragenter
वर्ग है दिखाएगा:
body {
position: absolute;
height: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#overlay {
position: absolute;
height: auto;
width: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(bg.png) repeat-x top right, url(bg.png) repeat-x bottom left, url(bg.png) repeat-y top right, url(bg.p
ng) repeat-y bottom left;
display: none;
}
body.dragenter #overlay {
display: block;
}
जावास्क्रिप्ट। dragenter पर 'dragenter' वर्ग जोड़ें और dragleave पर उसे निकाल देता है:
$(document).on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
console.log('dragenter');
$(document.body).addClass('dragenter');
});
$(document).on('dragleave', function (e) {
e.stopPropagation();
e.preventDefault();
console.log('dragleave';
$(document.body).removeClass('dragenter');
});
एचटीएमएल:
<body>
<div id="overlay">...</div>
...
</body>
बहुत बढ़िया, ठीक है, मैं अब कुछ घंटों के लिए हल करने की तलाश में था;) लेकिन जहां तक मुझे jquery, $ ('*: visual') पता है। लाइव() एक बहुत महंगा चयनकर्ता होना चाहिए। क्या कोई और समाधान हो सकता है? मेरा मतलब imgur पर लोग हैं।कॉम स्पष्ट रूप से एक रास्ता मिला (साइट पर अपने खोजक/एक्सप्लोरर से एक फ़ाइल खींचें और आप देखेंगे) लेकिन मैं यह पता लगाने के लिए कोड को इंजीनियर नहीं कर सका :( –
मुझे लगता है कि यह एक भारी हाथ का समाधान है भी, लेकिन यह सबसे आसान है (मुझे एक कार्य प्रोजेक्ट और सभी समय पर बाधाओं के साथ)। मैंने इमगुर कोड को भी देखने की कोशिश की है और ऐसा कुछ नहीं है जिसे मैं गहराई से खोदना चाहता हूं। – twig