2010-01-27 18 views
6

मेरे पास HTML 5 ड्रैग-ड्रॉप एपीआई का उपयोग करके एक wysiwyg संपादक है जो उपयोगकर्ता को उस पृष्ठ के भीतर विजेट्स रखने की अनुमति देता है, जिसे वे संपादित कर रहे हैं। जब ऑनड्रॉप ईवेंट आग लगती है, तो मैं डिफ़ॉल्ट ईवेंट को रोकता हूं, और संपादक के भीतर कुछ HTML डालता हूं जो उनके द्वारा डाले गए विजेट का प्रतिनिधित्व करता है। मैं फ़ायरफ़ॉक्स में इसके लिए execCommand("inserthtml", false, html) का उपयोग करता हूं।फ़ायरफ़ॉक्स में wysiwyg संपादक में एचटीएमएल 5 ड्रैग-ड्रॉप

यह आईई में ठीक काम करता है, लेकिन फ़ायरफ़ॉक्स में एचटीएमएल उस स्थान पर नहीं रखा जाता है जहां इसे गिरा दिया गया था। यह हमेशा उस स्थान पर रखा जाता है जहां पिछला चयन था, जो मुझे विश्वास दिलाता है कि डिफ़ॉल्ट ड्रॉप को ओवरराइड करने के लिए ऑनड्रॉप ईवेंट को रद्द करना भी चयन परिवर्तन को रद्द कर देता है।

इसे हल करने के तरीके पर कोई विचार?

धन्यवाद!

+0

हाय का प्रयास करें? मैं आज सुबह जेएस पर एक अच्छी चुनौती की तलाश में हूं, जबकि मेरा दिमाग कुछ अन्य कार्यों को झुका रहा है, इसलिए मैंने सोचा कि मैं थोड़ा सा पूछ सकता हूं और सोच सकता हूं ... – jcolebrand

+0

देर से उत्तर के लिए खेद है! मैं इनमें से किसी भी सुझाव का प्रयास करने में सक्षम नहीं हूं, लेकिन मुझे संदेह है कि वे काम करेंगे क्योंकि यह HTML5 ड्रैग-ड्रॉप एपीआई का उपयोग कर रहा है, न कि सामान्य ड्रैग-ड्रॉप सामान जो उदाहरण के लिए वाईयूआई ऑफर करता है। मैं यूयूआई का उपयोग करता हूं और jQuery नहीं, इसलिए मुझे jQuery के बारे में पता नहीं है, लेकिन बहुत यकीन है कि यूयूआई ड्रैग-ड्रॉप किसी भी HTML5 सामान को लागू नहीं करता है। मैंने अंततः डिफ़ॉल्ट ड्रॉप को अनुमति देकर समस्या को हल किया, और बाद में पाठ को उस पाठ के साथ बदल दिया जिसे मैं बाद में चाहता था। समाधान से खुश नहीं है, लेकिन यह मेरे मामले के लिए काम करता है। – einarq

उत्तर

1

मुझे इन प्रकार के उत्तरों से नफरत है, लेकिन मुझे कहना है, jQuery UI के ड्रैग & ड्रॉप ईवेंट संरचना बहुत सरल है। यह आपको उन ऑब्जेक्ट्स को ट्रैक करने की अनुमति देगा जो आप उपयोग कर रहे हैं और उस HTML को जोड़ दें जो आप जल्दी से बात कर रहे हैं।

यदि आप इससे परिचित नहीं हैं, तो मुझे लगता है कि यह उस प्रणाली के प्रकार के लिए एक शानदार विकल्प है जिसके बारे में आप बात कर रहे हैं।

0

आप कभी भी किसी भी अधिक काम इस पर किया मिला इस

$('.textarea').wysihtml5({ 
    events: { 
     "load": function() { 
     var vm=this; 
      $($('.wysihtml5-sandbox').contents().find('body')).on("dragleave", function(event) { 
       event.preventDefault(); 
       event.stopPropagation(); 
      }); 

      $($('.wysihtml5-sandbox').contents().find('body')).on("drop", function(event) { 
       event.preventDefault(); 
       event.stopPropagation(); 
       debugger; 
       var dt = event.originalEvent.dataTransfer; 
         var files = dt.files; 

       var reader = new FileReader(); 
       reader.onload = function (e) { 
        var data = this.result; 
        debugger; 
        vm.composer.commands.exec('insertImage',e.target.result); 
       } 
       reader.readAsDataURL(files[0]); 
      }); 
       $($('.wysihtml5-sandbox').contents().find('body')).on("dragover", function(event) { 
     console.log('graddddd'); 
        event.preventDefault(); 
        event.stopPropagation(); 
        $(this).addClass('dragging'); 
       }); 
     } 
    } 
}); 

https://jsfiddle.net/surajmahajan007/2yu456nw/

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