2016-03-30 16 views
0

Sorgun bir LI içinde, tasarım moduna sahip zengin bir metin alanına sahip olduğum bir yerde sorun yaşıyorum. Sorun, LI yeni bir konuma sürüklendiğinde designMode'un 'Off'a (Kapalı)' dönüşmesidir. Ve doğru iframe'i hedefleyebilmeme rağmen, designMode'u tekrar açmak için söylediğimde bunu görmezden geliyor gibi görünüyor, bunun neden olduğunu bilen var mı? Okuduğunuz için teşekkürler.iframe içeriği bir jqueryUI sıralanabilir liste öğesi içinde düzenlenebilir düzenlenebilir

düzenleme: jfiddle örnek: https://jsfiddle.net/LcLfaa8j/2/

function getRichTextField(itemId) { 
    console.log('get rich text field'); 
    return document.getElementById('rtf-iframe-' + itemId); 

}

$ (belge) .ready (fonksiyonu() {

getRichTextField("sort-textItem-1").contentWindow.document.designMode = "On"; 

getRichTextField("sort-textItem-2").contentWindow.document.designMode = "On"; 

$("#text-areas").sortable({ 
    axis: 'y', 
    opacity: 0.8, 
    tollerence: 'pointer', 
    update: function(event, ui) { 
     var order = $(this).sortable("serialize", { key: "order" }); 
     console.log("New Order = " + order); 

     console.log('the iframe that was moved designMode is now Off...'); 

     var richText = getRichTextField($(this).data().uiSortable.currentItem.attr('id')); 

     console.log('TEST: the current is ' + $(this).data().uiSortable.currentItem.attr('id') + ' and designMode = ' + richText.contentWindow.document.designMode + ' doubleCheckOfRTFid = ' + $(richText).attr('id') + ' class = ' + $(richText).attr('class')); 

     richText.contentWindow.document.designMode = "On"; 

     console.log('just attempted to turn designMode back on... but it gets ignored'); 
    } 
    }); 

});

+0

Güvende kimsenin ne olduğunu bilmediğini söyleyebilirim. Belirsiz sorulara faydalı, özel cevaplar alamazsınız. Sorunu gösteren örnekleri eklemeniz gerekir; Kimse senin için tüm ayak işlerini yapmaya gelmeyecek. – LinuxDisciple

+0

, gönderileceği anda bir örnek üzerinde çalışarak başlarını takdir ediyor. – RON2015

+0

https://jsfiddle.net/LcLfaa8j/2/ DesignMode ile iki iframe içeren küçük bir örnek oluşturdum. İçinde bulundukları LI sıralanabilir, lütfen bunları yeniden sıralamayı deneyin ve yalnızca bir modelin designMode olduğunu fark edin. yeni bir konuma sürüklemek için tıkladığınızda designMode kapalı ve tekrar açmaya yönelik girişimde başarısız oluyor. – RON2015

cevap

0

DesignMode'u bu düzeltmeleri geri almadan önce setTimeout ile küçük bir gecikme eklemek gibi görünüyor. Tek çözüm bu mu? Sadece merak.

1

Bu sadece kısmi bir cevaptır.
designMode kapanmıyor; varsayılan olarak kapalıdır ve .designMode="on"'u ayarladığınız belge, sürüklediğinizde silinir (ve sıfırdan yeniden oluşturulur). İçeriği dokümanlardan birine koyar ve ardından sürüklerseniz, içeriğin kaybolduğunu görebilirsiniz. Iframe yeni bir .contentWindow alıyor gibi görünüyor, yani farklı bir çocuk belgesine sahip olduğu anlamına geliyor.
Sen çalıştırarak denetçisi de görüyoruz

var before = getRichTextField("sort-textItem-2"); 
var beforecontentWindow=before.contentWindow; 


Şimdi çalıştırın (şimdi ikinci iframe sürüklemek):

var after = getRichTextField("sort-textItem-2"); 
var aftercontentWindow=after.contentWindow; 

Şimdi === ile referansları karşılaştırmak:

before === after ;//returns true because iframe is the same 
beforecontentWindow === aftercontentWindow ;//returns false because .contentWindow changed 

Ayrıca bu gönderiyi izleyin Jquery Sortable and Draggable between parent and child frame nerede sürükleyerek sorun yaşıyordu Gable ve sortable, ama sonunda çalıştım. Neden sürüklendiğimi, iframe'inize yeni bir contentWindow vereceğini bilmiyorum, ama belki de başka birileri bunun üzerine inşa edebilecek.