2017-06-26 17 views
5

JSFiddle ले जाया जाता है क्रोम में फायरिंग नहीं घटना: https://jsfiddle.net/r8wxpujg/1/Dragend जब एक iframe ड्रॉप समारोह में

हर पूरा खींचें और ड्रॉप आपरेशन पर, मैं एक dragstart और एक dragend घटना उम्मीद तत्व घसीटा जा रहा है पर लागू किया जाना करने के लिए । ऊपर से जुड़े डेमो dragstart और dragend घटनाओं की गणना करके इस प्रभाव को दर्शाता है। जब छवि ड्रैग-एंड-ड्रॉप ऑपरेशंस द्वारा dragstart और dragend घटनाओं की आग और अपेक्षित के रूप में काउंटर वृद्धि के आसपास स्थानांतरित की जा रही है। जब बटन क्लिक किया जाता है ताकि छवि को चारों ओर स्थानांतरित करने की बजाय, iframe इसके बजाए स्थानांतरित हो जाए, dragend काउंटर वृद्धि को रोकता है, यह दर्शाता है कि dragend ईवेंट कभी नहीं निकाल दिया जाता है।

क्रोम में किसी भी तरह, डीओएम में iframe की गति dragend ईवेंट को निकाल दिया जा सकता है।

मैंने फ़ायरफ़ॉक्स और आईई 11 में इसका परीक्षण किया है, और दोनों iframe एस चलते समय अपेक्षित व्यवहार करते हैं।

मैंने इसे कुछ दिनों के लिए शोध किया है और कोई जानकारी नहीं ढूंढ पाई है, इसलिए मैं पूछना चाहता हूं कि किसी ने पहले इसमें भाग लिया है या किसी के पास कोई समाधान है या नहीं। क्या यह क्रोम में एक बग हो सकता है? या मैं बस कुछ याद कर रहा हूँ।

EDIT: यह क्रोमियम में एक पुष्टि की गई बग है, बग रिपोर्ट यहां पाई जा सकती है: https://bugs.chromium.org/p/chromium/issues/detail?id=737691

समस्या के ठीक होने तक पॉल के जवाब को कामकाज के लिए नीचे देखें।

+0

मैं यह भी देख रहा हूं। क्षमा करें यह अधिक उपयोगी नहीं है। बस इसे मिला, और "ड्रैगेंड" और "आईफ्रेम" की खोज की, और इसे पाया। शायद यह हाल ही में पेश की गई बग है? – jenming

+0

आह, मुझे लगता है कि आपने क्रोमियम बग दायर किया है: https://bugs.chromium.org/p/chromium/issues/detail?id=737691&q=dragend&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner % 20 सारांश% 20OS% 20 संशोधित – jenming

+0

मैं क्रोम/मैक में यह समस्या भी देख रहा हूं। जब तक मुझे आपकी पोस्ट नहीं मिल जाती तब तक इसका पता लगाने की कोशिश कर पागल हो रहा था। इसकी रिपोर्ट करने के लिए धन्यवाद और उम्मीद है कि यह जल्द ही खत्म हो जाएगा। – bryanus

उत्तर

3

मैं मानता हूं कि यह Chrome bug है और मेरे पास इसका कोई समाधान नहीं है। लेकिन कुछ मामलों में आप ड्रैग इवेंट किए जाने तक आईफ्रेम कदम में देरी करके बग के आसपास काम कर सकते हैं। यह this fork of your fiddle में काम करता है। बस उस बग रिपोर्ट करने के लिए अपने

if(element.id === 'div1drag') { 
    document.getElementById('div1').appendChild(item); 
} 
else if(element.id === 'div2drag') { 
    document.getElementById('div2').appendChild(item); 
} 
इस

if(element.id === 'div1drag') { 
    window.setTimeout(function() { 
     document.getElementById('div1').appendChild(item); 
    }, 0) 
} 
else if(element.id === 'div2drag') { 
    window.setTimeout(function() { 
     document.getElementById('div2').appendChild(item); 
    }, 0) 
} 

इसके अलावा साथ

, धन्यवाद बदलें। यह आज मुझे पागल कर रहा था।

+0

मैंने वर्कअराउंड प्रदान करने के लिए आपका उत्तर स्वीकार कर लिया है। उम्मीद है कि क्रोमियम टीम जल्द ही इसे ठीक करेगी और मैं इसे अपडेट कर सकता हूं। – z2oh

0

dragEnd घटना को सुनने के बजाय मैंने जो काम किया था, मैंने drop घटना की बात सुनी, जिसने मेरी ज़रूरतों को पर्याप्त रूप से पूरा किया, हालांकि यह हर किसी के लिए काम नहीं कर सकता है।

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