2011-09-16 21 views
8

Bir textarea ve katıştırılmış bir içeriğe dönüştürülebilir iframe (bir adım) içeren bazı html öğeleri içeren bir web sayfam var. Ana sayfa 'my_data' bir textarea bırakarak, metin/html-verileriSürükleme: Verilerin değiştirilmesi

Şimdi
jQuery(document).bind('draggesture', function(event){     
    event.originalEvent.dataTransfer.setData('text/html', 'my_data'); 
}); 

ana sayfasındaki draggesture olay yakalamak ve ayarlamak için i yönetmek bu kodu kullanarak

düştü alır. Kapsamlı iframe de bırakarak 'my_data' da düşüyor.

1. belge çalışır iframe'lerden için işleyici bu tür Bağlama:

Ama ben anlamıyorum burada üç sorunların var. Analog veriyi yukarıdaki koda göre ayarlıyorum ama işe yaramıyor. Iframe içine veya ana sayfasındaki textarea'ya sürüklediğimde 'my_data' eklenmez, ancak orijinal seçilen içerik. 'my_data' öğesini ayarlamak için ne yapabilirim?

2. G/değiştirmeye çalıştı iframe drop olayını ve ana sayfasını kullanarak verileri ayarlayın:

jQuery(ed.getDoc()).bind('drop', function(event){ 
    event.originalEvent.dataTransfer.setData('text/html', 'my_data'); 
}); 

Ama her iki belgeleri (ana sayfa ve iframe üzerinde bir javascript hata alıyorum): "Bu belge için değişikliklere izin verilmiyor". Bu hatayı neden aldım? Bunun için bir çözüm var mı? pimvdb bunun için bir keşif aldı. Yukarıdan gelen birinci kod örneği kullanarak (Draggesture üzerine) 'my_data' ayarlandığında

3. ana sayfasından <p>some text</p><hr><p>some text</p> seçerek ve contenteditable iframe şey içine bu sürükleme yerleştirilmiş olur. Textarea eserlerine sürükleme. Burada neyin yanlış olduğunu bilen var mı? (sorun krom kullanarak oluşmaz!)

EDIT: Burada oynayabilir ve sorunu anlamak için bir jsFiddle demo şudur: draggesture ama dragstart eser kullanan

http://jsfiddle.net/R2rHn/5/

+1

Bir jsFiddle demo yapabilir miyim? –

+0

editörümü gözden geçirdim - jsFiddle demo ekledim – Thariama

cevap

2

.

İkinci olarak, drop numaralı dataTransfer verilerini ayarlamak anlamlı değildir, çünkü "paket" sürüklemesi daha sonra gelmiş demektir. Damladan sonra yok ediliyor, o zaman neden bu noktada değiştirmek istiyorsunuz?

Çözdüğünüz şeyleri çözmek için kemanınızı temizledim ve sonuç bu. Chrome'da çalışıyor gibi görünüyor.

http://jsfiddle.net/R2rHn/7/

tinyMCE.init({ 
    mode : "exact", 
    elements : "content", 
    skin : "o2k7", 
    skin_variant : "silver", 

    setup : function(ed) { 
    ed.onInit.add(function(ed, evt) { 
     var iframe = ed.getDoc(); 

     jQuery(iframe).bind('dragstart', function(event){ 
     event.originalEvent 
       .dataTransfer 
       .setData('text/plain', 'modified_content_from_iframe'); 
     }); 
    }); 
    }, 

}); 

jQuery(document).bind('dragstart', function(event){   event.originalEvent 
     .dataTransfer 
     .setData('text/html', 'my_data_html'); 

    event.originalEvent 
     .dataTransfer 
     .setData('text/plain', 'my_data_plain'); 
}); 
+0

+1 Kromda iyi çalışıyor, ancak firefox'ta değil. Müşterimiz Firefox kullanıyor olduğu için bir firefox çözümüne ihtiyacım var. Tektipsiz iframe'den textarea'ya sürüklendiğinde talihsiz verileri sürükleyerek değiştirmek FF5 & FF6 kullanarak çalışmaz. FF kullanarak davranış hala aynı. – Thariama

+0

@Thariama: Firefox hakkında emin değilim. Belki de Firefox'un tam desteği ve bazı hataları yoktur. Sürükle ve Bırak HTML5, bu yüzden henüz tam olarak çalışmayabilir. – pimvdb

+0

olabilir, işleyen bir geçici çözüm ile yaşayabilirim – Thariama